Added BGFX_TEXTURE_MSAA_SAMPLE flag.

This commit is contained in:
Branimir Karadžić
2016-04-17 23:00:36 -07:00
parent 032ec109dd
commit 7423257f57
2 changed files with 23 additions and 7 deletions

View File

@@ -6,7 +6,7 @@
#ifndef BGFX_DEFINES_H_HEADER_GUARD
#define BGFX_DEFINES_H_HEADER_GUARD
#define BGFX_API_VERSION UINT32_C(13)
#define BGFX_API_VERSION UINT32_C(14)
///
#define BGFX_STATE_RGB_WRITE UINT64_C(0x0000000000000001) //!< Enable RGB write.
@@ -296,6 +296,7 @@
#define BGFX_TEXTURE_MIP_POINT UINT32_C(0x00000400) //!<
#define BGFX_TEXTURE_MIP_SHIFT 10 //!<
#define BGFX_TEXTURE_MIP_MASK UINT32_C(0x00000400) //!<
#define BGFX_TEXTURE_MSAA_SAMPLE UINT32_C(0x00000800) //!<
#define BGFX_TEXTURE_RT UINT32_C(0x00001000) //!<
#define BGFX_TEXTURE_RT_MSAA_X2 UINT32_C(0x00002000) //!<
#define BGFX_TEXTURE_RT_MSAA_X4 UINT32_C(0x00003000) //!<

View File

@@ -2410,7 +2410,7 @@ BX_PRAGMA_DIAGNOSTIC_POP();
}
#if !BX_PLATFORM_WINDOWS
HRESULT hr;
HRESULT hr = S_OK;
if (g_platformData.ndt == 0)
{
hr = m_factory->CreateSwapChainForCoreWindow(m_device
@@ -3078,14 +3078,20 @@ BX_PRAGMA_DIAGNOSTIC_POP();
ID3D11ShaderResourceView* srv;
if (NULL == ptr)
{
TextureD3D11& texture = m_textures[_handle.idx];
const TextureD3D11& texture = m_textures[_handle.idx];
const bool msaaSample = 0 != (texture.m_flags&BGFX_TEXTURE_MSAA_SAMPLE);
const uint32_t msaaQuality = bx::uint32_satsub( (texture.m_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1);
const DXGI_SAMPLE_DESC& msaa = s_msaa[msaaQuality];
D3D11_SHADER_RESOURCE_VIEW_DESC desc;
desc.Format = s_textureFormat[texture.m_textureFormat].m_fmtSrv;
switch (texture.m_type)
{
case TextureD3D11::Texture2D:
desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
desc.ViewDimension = 1 < msaa.Count && msaaSample
? D3D11_SRV_DIMENSION_TEXTURE2DMS
: D3D11_SRV_DIMENSION_TEXTURE2D
;
desc.Texture2D.MostDetailedMip = _mip;
desc.Texture2D.MipLevels = 1;
break;
@@ -4327,6 +4333,7 @@ BX_PRAGMA_DIAGNOSTIC_POP();
const bool srgb = 0 != (m_flags&BGFX_TEXTURE_SRGB) || imageContainer.m_srgb;
const bool blit = 0 != (m_flags&BGFX_TEXTURE_BLIT_DST);
const bool readBack = 0 != (m_flags&BGFX_TEXTURE_READ_BACK);
const bool msaaSample = 0 != (m_flags&BGFX_TEXTURE_MSAA_SAMPLE);
const uint32_t msaaQuality = bx::uint32_satsub( (m_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1);
const DXGI_SAMPLE_DESC& msaa = s_msaa[msaaQuality];
@@ -4403,8 +4410,16 @@ BX_PRAGMA_DIAGNOSTIC_POP();
{
desc.ArraySize = 1;
desc.MiscFlags = 0;
srvd.ViewDimension = 1 < msaa.Count ? D3D11_SRV_DIMENSION_TEXTURE2DMS : D3D11_SRV_DIMENSION_TEXTURE2D;
srvd.Texture2D.MipLevels = numMips;
if (1 < msaa.Count
&& msaaSample)
{
srvd.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DMS;
}
else
{
srvd.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
srvd.Texture2D.MipLevels = numMips;
}
}
DX_CHECK(s_renderD3D11->m_device->CreateTexture2D(&desc, kk == 0 ? NULL : srd, &m_texture2d) );
@@ -4678,7 +4693,7 @@ BX_PRAGMA_DIAGNOSTIC_POP();
}
}
const uint32_t msaaQuality = bx::uint32_satsub( (texture.m_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1);
const uint32_t msaaQuality = bx::uint32_satsub( (texture.m_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1);
const DXGI_SAMPLE_DESC& msaa = s_msaa[msaaQuality];
if (isDepth( (TextureFormat::Enum)texture.m_textureFormat) )