@@ -104,27 +104,11 @@ void SampleApp::InitializeDiligentEngine(const NativeWindow* pWindow)
104104 case RENDER_DEVICE_TYPE_D3D11:
105105 {
106106 EngineD3D11CreateInfo EngineCI;
107-
108- # ifdef DILIGENT_DEVELOPMENT
109- EngineCI.DebugFlags |=
110- D3D11_DEBUG_FLAG_CREATE_DEBUG_DEVICE |
111- D3D11_DEBUG_FLAG_VERIFY_COMMITTED_SHADER_RESOURCES;
112- # endif
113107# ifdef DILIGENT_DEBUG
114- EngineCI.DebugFlags |= D3D11_DEBUG_FLAG_VERIFY_COMMITTED_RESOURCE_RELEVANCE ;
108+ EngineCI.SetValidationLevel (VALIDATION_LEVEL_2) ;
115109# endif
116-
117- if (m_ValidationLevel >= 1 )
118- {
119- EngineCI.DebugFlags =
120- D3D11_DEBUG_FLAG_CREATE_DEBUG_DEVICE |
121- D3D11_DEBUG_FLAG_VERIFY_COMMITTED_SHADER_RESOURCES |
122- D3D11_DEBUG_FLAG_VERIFY_COMMITTED_RESOURCE_RELEVANCE;
123- }
124- else if (m_ValidationLevel == 0 )
125- {
126- EngineCI.DebugFlags = D3D11_DEBUG_FLAG_NONE;
127- }
110+ if (m_ValidationLevel >= 0 )
111+ EngineCI.SetValidationLevel (static_cast <VALIDATION_LEVEL>(m_ValidationLevel));
128112
129113 m_TheSample->GetEngineInitializationAttribs (m_DeviceType, EngineCI, m_SwapChainInitDesc);
130114
@@ -187,20 +171,8 @@ void SampleApp::InitializeDiligentEngine(const NativeWindow* pWindow)
187171 case RENDER_DEVICE_TYPE_D3D12:
188172 {
189173 EngineD3D12CreateInfo EngineCI;
190-
191- # ifdef DILIGENT_DEVELOPMENT
192- EngineCI.EnableDebugLayer = true ;
193- # endif
194- if (m_ValidationLevel >= 1 )
195- {
196- EngineCI.EnableDebugLayer = true ;
197- if (m_ValidationLevel >= 2 )
198- EngineCI.EnableGPUBasedValidation = true ;
199- }
200- else if (m_ValidationLevel == 0 )
201- {
202- EngineCI.EnableDebugLayer = false ;
203- }
174+ if (m_ValidationLevel >= 0 )
175+ EngineCI.SetValidationLevel (static_cast <VALIDATION_LEVEL>(m_ValidationLevel));
204176
205177 m_TheSample->GetEngineInitializationAttribs (m_DeviceType, EngineCI, m_SwapChainInitDesc);
206178
@@ -287,19 +259,10 @@ void SampleApp::InitializeDiligentEngine(const NativeWindow* pWindow)
287259 EngineGLCreateInfo EngineCI;
288260 EngineCI.Window = *pWindow;
289261
290- # ifdef DILIGENT_DEVELOPMENT
291- EngineCI.CreateDebugContext = true ;
292- # endif
293- EngineCI.ForceNonSeparablePrograms = m_bForceNonSeprblProgs;
262+ if (m_ValidationLevel >= 0 )
263+ EngineCI.SetValidationLevel (static_cast <VALIDATION_LEVEL>(m_ValidationLevel));
294264
295- if (m_ValidationLevel >= 1 )
296- {
297- EngineCI.CreateDebugContext = true ;
298- }
299- else if (m_ValidationLevel == 0 )
300- {
301- EngineCI.CreateDebugContext = false ;
302- }
265+ EngineCI.ForceNonSeparablePrograms = m_bForceNonSeprblProgs;
303266
304267 m_TheSample->GetEngineInitializationAttribs (m_DeviceType, EngineCI, m_SwapChainInitDesc);
305268 if (EngineCI.NumDeferredContexts != 0 )
@@ -326,24 +289,15 @@ void SampleApp::InitializeDiligentEngine(const NativeWindow* pWindow)
326289 // Load the dll and import GetEngineFactoryVk() function
327290 auto GetEngineFactoryVk = LoadGraphicsEngineVk ();
328291# endif
329- EngineVkCreateInfo EngVkAttribs;
330- # ifdef DILIGENT_DEVELOPMENT
331- EngVkAttribs.EnableValidation = true ;
332- # endif
333- if (m_ValidationLevel >= 1 )
334- {
335- EngVkAttribs.EnableValidation = true ;
336- }
337- else if (m_ValidationLevel == 0 )
338- {
339- EngVkAttribs.EnableValidation = false ;
340- }
292+ EngineVkCreateInfo EngineCI;
293+ if (m_ValidationLevel >= 0 )
294+ EngineCI.SetValidationLevel (static_cast <VALIDATION_LEVEL>(m_ValidationLevel));
341295
342- m_TheSample->GetEngineInitializationAttribs (m_DeviceType, EngVkAttribs , m_SwapChainInitDesc);
343- ppContexts.resize (1 + EngVkAttribs .NumDeferredContexts );
296+ m_TheSample->GetEngineInitializationAttribs (m_DeviceType, EngineCI , m_SwapChainInitDesc);
297+ ppContexts.resize (1 + EngineCI .NumDeferredContexts );
344298 auto * pFactoryVk = GetEngineFactoryVk ();
345299 m_pEngineFactory = pFactoryVk;
346- pFactoryVk->CreateDeviceAndContextsVk (EngVkAttribs , &m_pDevice, ppContexts.data ());
300+ pFactoryVk->CreateDeviceAndContextsVk (EngineCI , &m_pDevice, ppContexts.data ());
347301 if (!m_pDevice)
348302 {
349303 LOG_ERROR_AND_THROW (" Unable to initialize Diligent Engine in Vulkan mode. The API may not be available, "
@@ -360,13 +314,15 @@ void SampleApp::InitializeDiligentEngine(const NativeWindow* pWindow)
360314#if METAL_SUPPORTED
361315 case RENDER_DEVICE_TYPE_METAL:
362316 {
363- EngineMtlCreateInfo MtlAttribs;
317+ EngineMtlCreateInfo EngineCI;
318+ if (m_ValidationLevel >= 0 )
319+ EngineCI.SetValidationLevel (static_cast <VALIDATION_LEVEL>(m_ValidationLevel));
364320
365- m_TheSample->GetEngineInitializationAttribs (m_DeviceType, MtlAttribs , m_SwapChainInitDesc);
366- ppContexts.resize (1 + MtlAttribs .NumDeferredContexts );
321+ m_TheSample->GetEngineInitializationAttribs (m_DeviceType, EngineCI , m_SwapChainInitDesc);
322+ ppContexts.resize (1 + EngineCI .NumDeferredContexts );
367323 auto * pFactoryMtl = GetEngineFactoryMtl ();
368324 m_pEngineFactory = pFactoryMtl;
369- pFactoryMtl->CreateDeviceAndContextsMtl (MtlAttribs , &m_pDevice, ppContexts.data ());
325+ pFactoryMtl->CreateDeviceAndContextsMtl (EngineCI , &m_pDevice, ppContexts.data ());
370326 if (!m_pDevice)
371327 {
372328 LOG_ERROR_AND_THROW (" Unable to initialize Diligent Engine in Metal mode. The API may not be available, "
0 commit comments