Skip to content

Commit 5e0eaf8

Browse files
walbourn_cpwalbourn_cp
walbourn_cp
authored and
walbourn_cp
committed
CreateTextureEx/CreateShaderResourceViewEx: Fixed forceSRGB logic (DirectXTK Codeplex issue 851)
1 parent 6b8936d commit 5e0eaf8

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

DirectXTex/DirectXTex.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ namespace DirectX
486486
_Outptr_ ID3D11ShaderResourceView** ppSRV );
487487

488488
HRESULT CreateTextureEx( _In_ ID3D11Device* pDevice, _In_reads_(nimages) const Image* srcImages, _In_ size_t nimages, _In_ const TexMetadata& metadata,
489-
_In_ D3D11_USAGE usage, _In_ unsigned int bindFlags, _In_ unsigned int cpuAccessFlags, _In_ unsigned int miscFlags,
489+
_In_ D3D11_USAGE usage, _In_ unsigned int bindFlags, _In_ unsigned int cpuAccessFlags, _In_ unsigned int miscFlags, _In_ bool forceSRGB,
490490
_Outptr_ ID3D11Resource** ppResource );
491491

492492
HRESULT CreateShaderResourceViewEx( _In_ ID3D11Device* pDevice, _In_reads_(nimages) const Image* srcImages, _In_ size_t nimages, _In_ const TexMetadata& metadata,

DirectXTex/DirectXTexD3D11.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -342,13 +342,13 @@ HRESULT CreateTexture( ID3D11Device* pDevice, const Image* srcImages, size_t nim
342342
ID3D11Resource** ppResource )
343343
{
344344
return CreateTextureEx( pDevice, srcImages, nimages, metadata,
345-
D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE, 0, 0,
345+
D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE, 0, 0, false,
346346
ppResource );
347347
}
348348

349349
_Use_decl_annotations_
350350
HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t nimages, const TexMetadata& metadata,
351-
D3D11_USAGE usage, unsigned int bindFlags, unsigned int cpuAccessFlags, unsigned int miscFlags,
351+
D3D11_USAGE usage, unsigned int bindFlags, unsigned int cpuAccessFlags, unsigned int miscFlags, bool forceSRGB,
352352
ID3D11Resource** ppResource )
353353
{
354354
if ( !pDevice || !srcImages || !nimages || !ppResource )
@@ -468,6 +468,8 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n
468468
// Create texture using static initialization data
469469
HRESULT hr = E_FAIL;
470470

471+
DXGI_FORMAT tformat = ( forceSRGB ) ? MakeSRGB( metadata.format ) : metadata.format;
472+
471473
switch ( metadata.dimension )
472474
{
473475
case TEX_DIMENSION_TEXTURE1D:
@@ -476,7 +478,7 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n
476478
desc.Width = static_cast<UINT>( metadata.width );
477479
desc.MipLevels = static_cast<UINT>( metadata.mipLevels );
478480
desc.ArraySize = static_cast<UINT>( metadata.arraySize );
479-
desc.Format = metadata.format;
481+
desc.Format = tformat;
480482
desc.Usage = usage;
481483
desc.BindFlags = bindFlags;
482484
desc.CPUAccessFlags = cpuAccessFlags;
@@ -493,7 +495,7 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n
493495
desc.Height = static_cast<UINT>( metadata.height );
494496
desc.MipLevels = static_cast<UINT>( metadata.mipLevels );
495497
desc.ArraySize = static_cast<UINT>( metadata.arraySize );
496-
desc.Format = metadata.format;
498+
desc.Format = tformat;
497499
desc.SampleDesc.Count = 1;
498500
desc.SampleDesc.Quality = 0;
499501
desc.Usage = usage;
@@ -515,7 +517,7 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n
515517
desc.Height = static_cast<UINT>( metadata.height );
516518
desc.Depth = static_cast<UINT>( metadata.depth );
517519
desc.MipLevels = static_cast<UINT>( metadata.mipLevels );
518-
desc.Format = metadata.format;
520+
desc.Format = tformat;
519521
desc.Usage = usage;
520522
desc.BindFlags = bindFlags;
521523
desc.CPUAccessFlags = cpuAccessFlags;
@@ -552,7 +554,7 @@ HRESULT CreateShaderResourceViewEx( ID3D11Device* pDevice, const Image* srcImage
552554

553555
ScopedObject<ID3D11Resource> resource;
554556
HRESULT hr = CreateTextureEx( pDevice, srcImages, nimages, metadata,
555-
usage, bindFlags, cpuAccessFlags, miscFlags,
557+
usage, bindFlags, cpuAccessFlags, miscFlags, forceSRGB,
556558
&resource );
557559
if ( FAILED(hr) )
558560
return hr;

0 commit comments

Comments
 (0)