mirror of
https://github.com/microsoft/DirectXTex.git
synced 2025-07-16 15:00:14 +02:00
DirectXTex: Fixed problem with DirectCompute compressor for BC7_UNORM_SRGB
- Also added diagnostic message from texconv when doing DirectCompute compression
This commit is contained in:
parent
d82ee0c5dd
commit
6cafea6cb0
@ -352,12 +352,13 @@ HRESULT GPUCompressBC::Compress( const Image& srcImage, const Image& destImage )
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--- Create input texture --------------------------------------------------------
|
//--- Create input texture --------------------------------------------------------
|
||||||
// TODO - non-power-of-2 BCs require handling non-multiple of 4 cases
|
|
||||||
|
|
||||||
auto pDevice = m_device.Get();
|
auto pDevice = m_device.Get();
|
||||||
if ( !pDevice )
|
if ( !pDevice )
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
|
||||||
|
// We need to avoid the hardware doing additional colorspace conversion
|
||||||
|
DXGI_FORMAT inputFormat = ( m_srcformat == DXGI_FORMAT_R8G8B8A8_UNORM_SRGB ) ? DXGI_FORMAT_R8G8B8A8_UNORM : m_srcformat;
|
||||||
|
|
||||||
ScopedObject<ID3D11Texture2D> sourceTex;
|
ScopedObject<ID3D11Texture2D> sourceTex;
|
||||||
{
|
{
|
||||||
D3D11_TEXTURE2D_DESC desc;
|
D3D11_TEXTURE2D_DESC desc;
|
||||||
@ -366,7 +367,7 @@ HRESULT GPUCompressBC::Compress( const Image& srcImage, const Image& destImage )
|
|||||||
desc.Height = static_cast<UINT>( srcImage.height );
|
desc.Height = static_cast<UINT>( srcImage.height );
|
||||||
desc.MipLevels = 1;
|
desc.MipLevels = 1;
|
||||||
desc.ArraySize = 1;
|
desc.ArraySize = 1;
|
||||||
desc.Format = srcImage.format;
|
desc.Format = inputFormat;
|
||||||
desc.SampleDesc.Count = 1;
|
desc.SampleDesc.Count = 1;
|
||||||
desc.Usage = D3D11_USAGE_DEFAULT;
|
desc.Usage = D3D11_USAGE_DEFAULT;
|
||||||
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
|
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
|
||||||
@ -388,7 +389,7 @@ HRESULT GPUCompressBC::Compress( const Image& srcImage, const Image& destImage )
|
|||||||
D3D11_SHADER_RESOURCE_VIEW_DESC desc;
|
D3D11_SHADER_RESOURCE_VIEW_DESC desc;
|
||||||
memset( &desc, 0, sizeof(desc) );
|
memset( &desc, 0, sizeof(desc) );
|
||||||
desc.Texture2D.MipLevels = 1;
|
desc.Texture2D.MipLevels = 1;
|
||||||
desc.Format = m_srcformat;
|
desc.Format = inputFormat;
|
||||||
desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
|
desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
|
||||||
|
|
||||||
HRESULT hr = pDevice->CreateShaderResourceView( sourceTex.Get(), &desc, sourceSRV.ReleaseAndGetAddressOf() );
|
HRESULT hr = pDevice->CreateShaderResourceView( sourceTex.Get(), &desc, sourceSRV.ReleaseAndGetAddressOf() );
|
||||||
|
@ -440,18 +440,42 @@ bool CreateDevice( _Outptr_ ID3D11Device** pDevice )
|
|||||||
|
|
||||||
if ( !hwopts.ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x )
|
if ( !hwopts.ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x )
|
||||||
{
|
{
|
||||||
|
if ( *pDevice )
|
||||||
|
{
|
||||||
|
(*pDevice)->Release();
|
||||||
|
*pDevice = nullptr;
|
||||||
|
}
|
||||||
hr = HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
hr = HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( FAILED(hr) && *pDevice )
|
if ( SUCCEEDED(hr) )
|
||||||
{
|
{
|
||||||
(*pDevice)->Release();
|
IDXGIDevice* dxgiDevice = nullptr;
|
||||||
*pDevice = nullptr;
|
hr = (*pDevice)->QueryInterface( __uuidof( IDXGIDevice ), reinterpret_cast< void** >( &dxgiDevice ) );
|
||||||
}
|
if ( SUCCEEDED(hr) )
|
||||||
|
{
|
||||||
|
IDXGIAdapter* pAdapter = nullptr;
|
||||||
|
hr = dxgiDevice->GetAdapter( &pAdapter );
|
||||||
|
if ( SUCCEEDED(hr) )
|
||||||
|
{
|
||||||
|
DXGI_ADAPTER_DESC desc;
|
||||||
|
hr = pAdapter->GetDesc( &desc );
|
||||||
|
if ( SUCCEEDED(hr) )
|
||||||
|
{
|
||||||
|
wprintf( L"\n[Using DirectCompute on \"%s\"]\n", desc.Description );
|
||||||
|
}
|
||||||
|
pAdapter->Release();
|
||||||
|
}
|
||||||
|
|
||||||
return SUCCEEDED(hr);
|
dxgiDevice->Release();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user