Skip to content

Commit ad49f70

Browse files
Render state cache: added logging level control (API252009)
1 parent 9b64c77 commit ad49f70

File tree

5 files changed

+32
-15
lines changed

5 files changed

+32
-15
lines changed

Graphics/GraphicsEngine/interface/APIInfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
/// \file
3131
/// Diligent API information
3232

33-
#define DILIGENT_API_VERSION 252008
33+
#define DILIGENT_API_VERSION 252009
3434

3535
#include "../../../Primitives/interface/BasicTypes.h"
3636

Graphics/GraphicsTools/interface/RenderStateCache.h

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,31 @@
3333

3434
DILIGENT_BEGIN_NAMESPACE(Diligent)
3535

36+
// clang-format off
37+
38+
/// Render state cache logging level.
39+
DILIGENT_TYPED_ENUM(RENDER_STATE_CACHE_LOG_LEVEL, Uint8)
40+
{
41+
/// Logging is disabled.
42+
RENDER_STATE_CACHE_LOG_LEVEL_DISABLED,
43+
44+
/// Normal logging level.
45+
RENDER_STATE_CACHE_LOG_LEVEL_NORMAL,
46+
47+
/// Verbose logging level.
48+
RENDER_STATE_CACHE_LOG_LEVEL_VERBOSE
49+
};
50+
51+
// clang-format on
52+
3653
/// Render state cache create information.
3754
struct RenderStateCacheCreateInfo
3855
{
3956
/// A pointer to the render device, must not be null.
4057
IRenderDevice* pDevice DEFAULT_INITIALIZER(nullptr);
4158

42-
/// Whether to log the cache usage events such as
43-
/// if the object was found in the cache or not.
44-
bool EnableLogging DEFAULT_INITIALIZER(false);
59+
/// Logging level, see Diligent::RENDER_STATE_CACHE_LOG_LEVEL.
60+
RENDER_STATE_CACHE_LOG_LEVEL LogLevel DEFAULT_INITIALIZER(RENDER_STATE_CACHE_LOG_LEVEL_NORMAL);
4561

4662
/// Whether to enable hot shader and pipeline state reloading.
4763
///
@@ -59,11 +75,11 @@ struct RenderStateCacheCreateInfo
5975

6076
constexpr explicit RenderStateCacheCreateInfo(
6177
IRenderDevice* _pDevice,
62-
bool _EnableLogging = RenderStateCacheCreateInfo{}.EnableLogging,
78+
RENDER_STATE_CACHE_LOG_LEVEL _LogLevel = RenderStateCacheCreateInfo{}.LogLevel,
6379
bool _EnableHotReload = RenderStateCacheCreateInfo{}.EnableHotReload,
6480
IShaderSourceInputStreamFactory* _pReloadSource = RenderStateCacheCreateInfo{}.pReloadSource) noexcept :
6581
pDevice{_pDevice},
66-
EnableLogging{_EnableLogging},
82+
LogLevel{_LogLevel},
6783
EnableHotReload{_EnableHotReload},
6884
pReloadSource{_pReloadSource}
6985
{}

Graphics/GraphicsTools/src/RenderStateCache.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -508,10 +508,10 @@ RenderStateCacheImpl::RenderStateCacheImpl(IReferenceCounters* pRe
508508
LOG_ERROR_AND_THROW("Failed to create dearchiver");
509509
}
510510

511-
#define RENDER_STATE_CACHE_LOG(...) \
511+
#define RENDER_STATE_CACHE_LOG(Level, ...) \
512512
do \
513513
{ \
514-
if (m_CI.EnableLogging) \
514+
if (m_CI.LogLevel >= Level) \
515515
{ \
516516
LOG_INFO_MESSAGE("Render state cache: ", __VA_ARGS__); \
517517
} \
@@ -594,7 +594,7 @@ bool RenderStateCacheImpl::CreateShaderInternal(const ShaderCreateInfo& ShaderCI
594594
if (auto pShader = it->second.Lock())
595595
{
596596
*ppShader = pShader.Detach();
597-
RENDER_STATE_CACHE_LOG("Reusing existing shader '", (ShaderCI.Desc.Name ? ShaderCI.Desc.Name : ""), "'.");
597+
RENDER_STATE_CACHE_LOG(RENDER_STATE_CACHE_LOG_LEVEL_VERBOSE, "Reusing existing shader '", (ShaderCI.Desc.Name ? ShaderCI.Desc.Name : ""), "'.");
598598
return true;
599599
}
600600
else
@@ -650,7 +650,7 @@ bool RenderStateCacheImpl::CreateShaderInternal(const ShaderCreateInfo& ShaderCI
650650
{
651651
if (pShader->GetDesc() == ShaderCI.Desc)
652652
{
653-
RENDER_STATE_CACHE_LOG("Found shader '", HashStr, "'.");
653+
RENDER_STATE_CACHE_LOG(RENDER_STATE_CACHE_LOG_LEVEL_VERBOSE, "Found shader '", HashStr, "' in the archive.");
654654
*ppShader = pShader.Detach();
655655
return true;
656656
}
@@ -676,7 +676,7 @@ bool RenderStateCacheImpl::CreateShaderInternal(const ShaderCreateInfo& ShaderCI
676676
if (pArchivedShader)
677677
{
678678
if (m_pArchiver->AddShader(pArchivedShader))
679-
RENDER_STATE_CACHE_LOG("Added shader '", HashStr, "'.");
679+
RENDER_STATE_CACHE_LOG(RENDER_STATE_CACHE_LOG_LEVEL_NORMAL, "Added shader '", HashStr, "'.");
680680
else
681681
LOG_ERROR_MESSAGE("Failed to archive shader '", HashStr, "'.");
682682
}
@@ -1025,7 +1025,7 @@ bool RenderStateCacheImpl::CreatePipelineStateInternal(const CreateInfoType& PSO
10251025
if (auto pPSO = it->second.Lock())
10261026
{
10271027
*ppPipelineState = pPSO.Detach();
1028-
RENDER_STATE_CACHE_LOG("Reusing existing PSO '", (PSOCreateInfo.PSODesc.Name ? PSOCreateInfo.PSODesc.Name : ""), "'.");
1028+
RENDER_STATE_CACHE_LOG(RENDER_STATE_CACHE_LOG_LEVEL_VERBOSE, "Reusing existing pipeline '", (PSOCreateInfo.PSODesc.Name ? PSOCreateInfo.PSODesc.Name : ""), "'.");
10291029
return true;
10301030
}
10311031
else
@@ -1083,7 +1083,7 @@ bool RenderStateCacheImpl::CreatePipelineStateInternal(const CreateInfoType& PSO
10831083

10841084
if (FoundInCache)
10851085
{
1086-
RENDER_STATE_CACHE_LOG("Found PSO '", HashStr, "'.");
1086+
RENDER_STATE_CACHE_LOG(RENDER_STATE_CACHE_LOG_LEVEL_VERBOSE, "Found pipeline '", HashStr, "' in the archive.");
10871087
return true;
10881088
}
10891089

@@ -1104,7 +1104,7 @@ bool RenderStateCacheImpl::CreatePipelineStateInternal(const CreateInfoType& PSO
11041104
if (pSerializedPSO)
11051105
{
11061106
if (m_pArchiver->AddPipelineState(pSerializedPSO))
1107-
RENDER_STATE_CACHE_LOG("Added PSO '", HashStr, "'.");
1107+
RENDER_STATE_CACHE_LOG(RENDER_STATE_CACHE_LOG_LEVEL_NORMAL, "Added pipeline '", HashStr, "'.");
11081108
else
11091109
LOG_ERROR_MESSAGE("Failed to archive PSO '", HashStr, "'.");
11101110
}

ReleaseHistory.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Current progress
22

3+
* Added `RENDER_STATE_CACHE_LOG_LEVEL` enum, replaced `EnableLogging` member of `RenderStateCacheCreateInfo` struct with `LoggingLevel` (API252009)
34
* Added `IPipelineResourceSignature::CopyStaticResources` and `IPipelineState::CopyStaticResources` methods (API252008)
45
* Added render state cache (`IRenderStateCache` interface and related data types) (API252007)
56
* Moved `UseCombinedTextureSamplers` and `CombinedSamplerSuffix` members from `ShaderCreateInfo` to `ShaderDesc` (API252006)

Tests/DiligentCoreAPITest/src/RenderStateCacheTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ RefCntAutoPtr<IRenderStateCache> CreateCache(IRenderDevice* pD
188188
IDataBlob* pCacheData = nullptr,
189189
IShaderSourceInputStreamFactory* pShaderReloadFactory = nullptr)
190190
{
191-
RenderStateCacheCreateInfo CacheCI{pDevice, true, HotReload, pShaderReloadFactory};
191+
RenderStateCacheCreateInfo CacheCI{pDevice, RENDER_STATE_CACHE_LOG_LEVEL_VERBOSE, HotReload, pShaderReloadFactory};
192192

193193
RefCntAutoPtr<IRenderStateCache> pCache;
194194
CreateRenderStateCache(CacheCI, &pCache);

0 commit comments

Comments
 (0)