Commit f434906c by Olli Etuaho Committed by Commit Bot

Group D3D11 DXGI format info under a struct

This patch refactors how DXGI format info is stored. The goal is to make it easier to make changes that affect both swizzle formats and regular texture formats, and make it easier to pass the format sets around. BUG=angleproject:1244 TEST=angle_end2end_tests Change-Id: I1cc220bccbbdde9200a41829fdc37c8ec123c6a1 Reviewed-on: https://chromium-review.googlesource.com/329072Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
parent 6151af8c
...@@ -89,7 +89,7 @@ bool Image11::isDirty() const ...@@ -89,7 +89,7 @@ bool Image11::isDirty() const
if (mDirty && !mStagingTexture && !mRecoverFromStorage) if (mDirty && !mStagingTexture && !mRecoverFromStorage)
{ {
const Renderer11DeviceCaps &deviceCaps = mRenderer->getRenderer11DeviceCaps(); const Renderer11DeviceCaps &deviceCaps = mRenderer->getRenderer11DeviceCaps();
const d3d11::TextureFormat formatInfo = d3d11::GetTextureFormatInfo(mInternalFormat, deviceCaps); const auto &formatInfo = d3d11::GetTextureFormatInfo(mInternalFormat, deviceCaps);
if (formatInfo.dataInitializerFunction == nullptr) if (formatInfo.dataInitializerFunction == nullptr)
{ {
return false; return false;
...@@ -219,9 +219,10 @@ bool Image11::redefine(GLenum target, GLenum internalformat, const gl::Extents & ...@@ -219,9 +219,10 @@ bool Image11::redefine(GLenum target, GLenum internalformat, const gl::Extents &
mTarget = target; mTarget = target;
// compute the d3d format that will be used // compute the d3d format that will be used
const d3d11::TextureFormat &formatInfo = d3d11::GetTextureFormatInfo(internalformat, mRenderer->getRenderer11DeviceCaps()); const d3d11::TextureFormat &formatInfo =
mDXGIFormat = formatInfo.texFormat; d3d11::GetTextureFormatInfo(internalformat, mRenderer->getRenderer11DeviceCaps());
mRenderable = (formatInfo.rtvFormat != DXGI_FORMAT_UNKNOWN); mDXGIFormat = formatInfo.formatSet.texFormat;
mRenderable = (formatInfo.formatSet.rtvFormat != DXGI_FORMAT_UNKNOWN);
releaseStagingTexture(); releaseStagingTexture();
mDirty = (formatInfo.dataInitializerFunction != NULL); mDirty = (formatInfo.dataInitializerFunction != NULL);
...@@ -341,7 +342,7 @@ gl::Error Image11::copyFromFramebuffer(const gl::Offset &destOffset, ...@@ -341,7 +342,7 @@ gl::Error Image11::copyFromFramebuffer(const gl::Offset &destOffset,
const auto &d3d11Format = d3d11::GetTextureFormatInfo(srcAttachment->getInternalFormat(), const auto &d3d11Format = d3d11::GetTextureFormatInfo(srcAttachment->getInternalFormat(),
mRenderer->getRenderer11DeviceCaps()); mRenderer->getRenderer11DeviceCaps());
if (d3d11Format.texFormat == mDXGIFormat) if (d3d11Format.formatSet.texFormat == mDXGIFormat)
{ {
RenderTargetD3D *renderTarget = nullptr; RenderTargetD3D *renderTarget = nullptr;
gl::Error error = srcAttachment->getRenderTarget(&renderTarget); gl::Error error = srcAttachment->getRenderTarget(&renderTarget);
......
...@@ -205,7 +205,7 @@ gl::Error PixelTransfer11::copyBufferToTexture(const gl::PixelUnpackState &unpac ...@@ -205,7 +205,7 @@ gl::Error PixelTransfer11::copyBufferToTexture(const gl::PixelUnpackState &unpac
GLenum sourceFormat = gl::GetSizedInternalFormat(unsizedFormat, sourcePixelsType); GLenum sourceFormat = gl::GetSizedInternalFormat(unsizedFormat, sourcePixelsType);
const d3d11::TextureFormat &sourceFormatInfo = d3d11::GetTextureFormatInfo(sourceFormat, mRenderer->getRenderer11DeviceCaps()); const d3d11::TextureFormat &sourceFormatInfo = d3d11::GetTextureFormatInfo(sourceFormat, mRenderer->getRenderer11DeviceCaps());
DXGI_FORMAT srvFormat = sourceFormatInfo.srvFormat; DXGI_FORMAT srvFormat = sourceFormatInfo.formatSet.srvFormat;
ASSERT(srvFormat != DXGI_FORMAT_UNKNOWN); ASSERT(srvFormat != DXGI_FORMAT_UNKNOWN);
Buffer11 *bufferStorage11 = GetAs<Buffer11>(sourceBuffer.getImplementation()); Buffer11 *bufferStorage11 = GetAs<Buffer11>(sourceBuffer.getImplementation());
ID3D11ShaderResourceView *bufferSRV = bufferStorage11->getSRV(srvFormat); ID3D11ShaderResourceView *bufferSRV = bufferStorage11->getSRV(srvFormat);
......
...@@ -384,7 +384,8 @@ unsigned int SurfaceRenderTarget11::getSubresourceIndex() const ...@@ -384,7 +384,8 @@ unsigned int SurfaceRenderTarget11::getSubresourceIndex() const
DXGI_FORMAT SurfaceRenderTarget11::getDXGIFormat() const DXGI_FORMAT SurfaceRenderTarget11::getDXGIFormat() const
{ {
return d3d11::GetTextureFormatInfo(getInternalFormat(), mRenderer->getRenderer11DeviceCaps()).texFormat; return d3d11::GetTextureFormatInfo(getInternalFormat(), mRenderer->getRenderer11DeviceCaps())
.formatSet.texFormat;
} }
} }
...@@ -3058,7 +3058,7 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G ...@@ -3058,7 +3058,7 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G
desc.Height = height; desc.Height = height;
desc.MipLevels = 1; desc.MipLevels = 1;
desc.ArraySize = 1; desc.ArraySize = 1;
desc.Format = formatInfo.texFormat; desc.Format = formatInfo.formatSet.texFormat;
desc.SampleDesc.Count = (supportedSamples == 0) ? 1 : supportedSamples; desc.SampleDesc.Count = (supportedSamples == 0) ? 1 : supportedSamples;
desc.SampleDesc.Quality = 0; desc.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_DEFAULT; desc.Usage = D3D11_USAGE_DEFAULT;
...@@ -3069,14 +3069,15 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G ...@@ -3069,14 +3069,15 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G
// we'll flag it to allow binding that way. Shader resource views are a little // we'll flag it to allow binding that way. Shader resource views are a little
// more complicated. // more complicated.
bool bindRTV = false, bindDSV = false, bindSRV = false; bool bindRTV = false, bindDSV = false, bindSRV = false;
bindRTV = (formatInfo.rtvFormat != DXGI_FORMAT_UNKNOWN); bindRTV = (formatInfo.formatSet.rtvFormat != DXGI_FORMAT_UNKNOWN);
bindDSV = (formatInfo.dsvFormat != DXGI_FORMAT_UNKNOWN); bindDSV = (formatInfo.formatSet.dsvFormat != DXGI_FORMAT_UNKNOWN);
if (formatInfo.srvFormat != DXGI_FORMAT_UNKNOWN) if (formatInfo.formatSet.srvFormat != DXGI_FORMAT_UNKNOWN)
{ {
// Multisample targets flagged for binding as depth stencil cannot also be // Multisample targets flagged for binding as depth stencil cannot also be
// flagged for binding as SRV, so make certain not to add the SRV flag for // flagged for binding as SRV, so make certain not to add the SRV flag for
// these targets. // these targets.
bindSRV = !(formatInfo.dsvFormat != DXGI_FORMAT_UNKNOWN && desc.SampleDesc.Count > 1); bindSRV = !(formatInfo.formatSet.dsvFormat != DXGI_FORMAT_UNKNOWN &&
desc.SampleDesc.Count > 1);
} }
desc.BindFlags = (bindRTV ? D3D11_BIND_RENDER_TARGET : 0) | desc.BindFlags = (bindRTV ? D3D11_BIND_RENDER_TARGET : 0) |
...@@ -3098,7 +3099,7 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G ...@@ -3098,7 +3099,7 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G
if (bindSRV) if (bindSRV)
{ {
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
srvDesc.Format = formatInfo.srvFormat; srvDesc.Format = formatInfo.formatSet.srvFormat;
srvDesc.ViewDimension = (supportedSamples == 0) ? D3D11_SRV_DIMENSION_TEXTURE2D : D3D11_SRV_DIMENSION_TEXTURE2DMS; srvDesc.ViewDimension = (supportedSamples == 0) ? D3D11_SRV_DIMENSION_TEXTURE2D : D3D11_SRV_DIMENSION_TEXTURE2DMS;
srvDesc.Texture2D.MostDetailedMip = 0; srvDesc.Texture2D.MostDetailedMip = 0;
srvDesc.Texture2D.MipLevels = 1; srvDesc.Texture2D.MipLevels = 1;
...@@ -3115,7 +3116,7 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G ...@@ -3115,7 +3116,7 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G
if (bindDSV) if (bindDSV)
{ {
D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc; D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc;
dsvDesc.Format = formatInfo.dsvFormat; dsvDesc.Format = formatInfo.formatSet.dsvFormat;
dsvDesc.ViewDimension = (supportedSamples == 0) ? D3D11_DSV_DIMENSION_TEXTURE2D : D3D11_DSV_DIMENSION_TEXTURE2DMS; dsvDesc.ViewDimension = (supportedSamples == 0) ? D3D11_DSV_DIMENSION_TEXTURE2D : D3D11_DSV_DIMENSION_TEXTURE2DMS;
dsvDesc.Texture2D.MipSlice = 0; dsvDesc.Texture2D.MipSlice = 0;
dsvDesc.Flags = 0; dsvDesc.Flags = 0;
...@@ -3137,7 +3138,7 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G ...@@ -3137,7 +3138,7 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G
else if (bindRTV) else if (bindRTV)
{ {
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = formatInfo.rtvFormat; rtvDesc.Format = formatInfo.formatSet.rtvFormat;
rtvDesc.ViewDimension = (supportedSamples == 0) ? D3D11_RTV_DIMENSION_TEXTURE2D : D3D11_RTV_DIMENSION_TEXTURE2DMS; rtvDesc.ViewDimension = (supportedSamples == 0) ? D3D11_RTV_DIMENSION_TEXTURE2D : D3D11_RTV_DIMENSION_TEXTURE2DMS;
rtvDesc.Texture2D.MipSlice = 0; rtvDesc.Texture2D.MipSlice = 0;
...@@ -3448,7 +3449,8 @@ bool Renderer11::supportsFastCopyBufferToTexture(GLenum internalFormat) const ...@@ -3448,7 +3449,8 @@ bool Renderer11::supportsFastCopyBufferToTexture(GLenum internalFormat) const
const gl::InternalFormat &internalFormatInfo = gl::GetInternalFormatInfo(internalFormat); const gl::InternalFormat &internalFormatInfo = gl::GetInternalFormatInfo(internalFormat);
const d3d11::TextureFormat &d3d11FormatInfo = d3d11::GetTextureFormatInfo(internalFormat, mRenderer11DeviceCaps); const d3d11::TextureFormat &d3d11FormatInfo = d3d11::GetTextureFormatInfo(internalFormat, mRenderer11DeviceCaps);
const d3d11::DXGIFormat &dxgiFormatInfo = d3d11::GetDXGIFormatInfo(d3d11FormatInfo.texFormat); const d3d11::DXGIFormat &dxgiFormatInfo =
d3d11::GetDXGIFormatInfo(d3d11FormatInfo.formatSet.texFormat);
// sRGB formats do not work with D3D11 buffer SRVs // sRGB formats do not work with D3D11 buffer SRVs
if (internalFormatInfo.colorEncoding == GL_SRGB) if (internalFormatInfo.colorEncoding == GL_SRGB)
...@@ -3457,7 +3459,7 @@ bool Renderer11::supportsFastCopyBufferToTexture(GLenum internalFormat) const ...@@ -3457,7 +3459,7 @@ bool Renderer11::supportsFastCopyBufferToTexture(GLenum internalFormat) const
} }
// We cannot support direct copies to non-color-renderable formats // We cannot support direct copies to non-color-renderable formats
if (d3d11FormatInfo.rtvFormat == DXGI_FORMAT_UNKNOWN) if (d3d11FormatInfo.formatSet.rtvFormat == DXGI_FORMAT_UNKNOWN)
{ {
return false; return false;
} }
......
...@@ -208,9 +208,8 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe ...@@ -208,9 +208,8 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe
if (offscreenTextureDesc.Width != (UINT)backbufferWidth || if (offscreenTextureDesc.Width != (UINT)backbufferWidth ||
offscreenTextureDesc.Height != (UINT)backbufferHeight || offscreenTextureDesc.Height != (UINT)backbufferHeight ||
offscreenTextureDesc.Format != backbufferFormatInfo.texFormat || offscreenTextureDesc.Format != backbufferFormatInfo.formatSet.texFormat ||
offscreenTextureDesc.MipLevels != 1 || offscreenTextureDesc.MipLevels != 1 || offscreenTextureDesc.ArraySize != 1)
offscreenTextureDesc.ArraySize != 1)
{ {
ERR("Invalid texture parameters in the shared offscreen texture pbuffer"); ERR("Invalid texture parameters in the shared offscreen texture pbuffer");
release(); release();
...@@ -224,7 +223,7 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe ...@@ -224,7 +223,7 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe
D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0}; D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0};
offscreenTextureDesc.Width = backbufferWidth; offscreenTextureDesc.Width = backbufferWidth;
offscreenTextureDesc.Height = backbufferHeight; offscreenTextureDesc.Height = backbufferHeight;
offscreenTextureDesc.Format = backbufferFormatInfo.texFormat; offscreenTextureDesc.Format = backbufferFormatInfo.formatSet.texFormat;
offscreenTextureDesc.MipLevels = 1; offscreenTextureDesc.MipLevels = 1;
offscreenTextureDesc.ArraySize = 1; offscreenTextureDesc.ArraySize = 1;
offscreenTextureDesc.SampleDesc.Count = 1; offscreenTextureDesc.SampleDesc.Count = 1;
...@@ -282,7 +281,7 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe ...@@ -282,7 +281,7 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe
mKeyedMutex = d3d11::DynamicCastComObject<IDXGIKeyedMutex>(mOffscreenTexture); mKeyedMutex = d3d11::DynamicCastComObject<IDXGIKeyedMutex>(mOffscreenTexture);
D3D11_RENDER_TARGET_VIEW_DESC offscreenRTVDesc; D3D11_RENDER_TARGET_VIEW_DESC offscreenRTVDesc;
offscreenRTVDesc.Format = backbufferFormatInfo.rtvFormat; offscreenRTVDesc.Format = backbufferFormatInfo.formatSet.rtvFormat;
offscreenRTVDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; offscreenRTVDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
offscreenRTVDesc.Texture2D.MipSlice = 0; offscreenRTVDesc.Texture2D.MipSlice = 0;
...@@ -291,7 +290,7 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe ...@@ -291,7 +290,7 @@ EGLint SwapChain11::resetOffscreenColorBuffer(int backbufferWidth, int backbuffe
d3d11::SetDebugName(mOffscreenRTView, "Offscreen back buffer render target"); d3d11::SetDebugName(mOffscreenRTView, "Offscreen back buffer render target");
D3D11_SHADER_RESOURCE_VIEW_DESC offscreenSRVDesc; D3D11_SHADER_RESOURCE_VIEW_DESC offscreenSRVDesc;
offscreenSRVDesc.Format = backbufferFormatInfo.srvFormat; offscreenSRVDesc.Format = backbufferFormatInfo.formatSet.srvFormat;
offscreenSRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; offscreenSRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
offscreenSRVDesc.Texture2D.MostDetailedMip = 0; offscreenSRVDesc.Texture2D.MostDetailedMip = 0;
offscreenSRVDesc.Texture2D.MipLevels = static_cast<UINT>(-1); offscreenSRVDesc.Texture2D.MipLevels = static_cast<UINT>(-1);
...@@ -338,7 +337,7 @@ EGLint SwapChain11::resetOffscreenDepthBuffer(int backbufferWidth, int backbuffe ...@@ -338,7 +337,7 @@ EGLint SwapChain11::resetOffscreenDepthBuffer(int backbufferWidth, int backbuffe
D3D11_TEXTURE2D_DESC depthStencilTextureDesc; D3D11_TEXTURE2D_DESC depthStencilTextureDesc;
depthStencilTextureDesc.Width = backbufferWidth; depthStencilTextureDesc.Width = backbufferWidth;
depthStencilTextureDesc.Height = backbufferHeight; depthStencilTextureDesc.Height = backbufferHeight;
depthStencilTextureDesc.Format = depthBufferFormatInfo.texFormat; depthStencilTextureDesc.Format = depthBufferFormatInfo.formatSet.texFormat;
depthStencilTextureDesc.MipLevels = 1; depthStencilTextureDesc.MipLevels = 1;
depthStencilTextureDesc.ArraySize = 1; depthStencilTextureDesc.ArraySize = 1;
depthStencilTextureDesc.SampleDesc.Count = 1; depthStencilTextureDesc.SampleDesc.Count = 1;
...@@ -346,7 +345,7 @@ EGLint SwapChain11::resetOffscreenDepthBuffer(int backbufferWidth, int backbuffe ...@@ -346,7 +345,7 @@ EGLint SwapChain11::resetOffscreenDepthBuffer(int backbufferWidth, int backbuffe
depthStencilTextureDesc.Usage = D3D11_USAGE_DEFAULT; depthStencilTextureDesc.Usage = D3D11_USAGE_DEFAULT;
depthStencilTextureDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; depthStencilTextureDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL;
if (depthBufferFormatInfo.srvFormat != DXGI_FORMAT_UNKNOWN) if (depthBufferFormatInfo.formatSet.srvFormat != DXGI_FORMAT_UNKNOWN)
{ {
depthStencilTextureDesc.BindFlags |= D3D11_BIND_SHADER_RESOURCE; depthStencilTextureDesc.BindFlags |= D3D11_BIND_SHADER_RESOURCE;
} }
...@@ -374,7 +373,7 @@ EGLint SwapChain11::resetOffscreenDepthBuffer(int backbufferWidth, int backbuffe ...@@ -374,7 +373,7 @@ EGLint SwapChain11::resetOffscreenDepthBuffer(int backbufferWidth, int backbuffe
d3d11::SetDebugName(mDepthStencilTexture, "Offscreen depth stencil texture"); d3d11::SetDebugName(mDepthStencilTexture, "Offscreen depth stencil texture");
D3D11_DEPTH_STENCIL_VIEW_DESC depthStencilDesc; D3D11_DEPTH_STENCIL_VIEW_DESC depthStencilDesc;
depthStencilDesc.Format = depthBufferFormatInfo.dsvFormat; depthStencilDesc.Format = depthBufferFormatInfo.formatSet.dsvFormat;
depthStencilDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; depthStencilDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
depthStencilDesc.Flags = 0; depthStencilDesc.Flags = 0;
depthStencilDesc.Texture2D.MipSlice = 0; depthStencilDesc.Texture2D.MipSlice = 0;
...@@ -383,10 +382,10 @@ EGLint SwapChain11::resetOffscreenDepthBuffer(int backbufferWidth, int backbuffe ...@@ -383,10 +382,10 @@ EGLint SwapChain11::resetOffscreenDepthBuffer(int backbufferWidth, int backbuffe
ASSERT(SUCCEEDED(result)); ASSERT(SUCCEEDED(result));
d3d11::SetDebugName(mDepthStencilDSView, "Offscreen depth stencil view"); d3d11::SetDebugName(mDepthStencilDSView, "Offscreen depth stencil view");
if (depthBufferFormatInfo.srvFormat != DXGI_FORMAT_UNKNOWN) if (depthBufferFormatInfo.formatSet.srvFormat != DXGI_FORMAT_UNKNOWN)
{ {
D3D11_SHADER_RESOURCE_VIEW_DESC depthStencilSRVDesc; D3D11_SHADER_RESOURCE_VIEW_DESC depthStencilSRVDesc;
depthStencilSRVDesc.Format = depthBufferFormatInfo.srvFormat; depthStencilSRVDesc.Format = depthBufferFormatInfo.formatSet.srvFormat;
depthStencilSRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; depthStencilSRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
depthStencilSRVDesc.Texture2D.MostDetailedMip = 0; depthStencilSRVDesc.Texture2D.MostDetailedMip = 0;
depthStencilSRVDesc.Texture2D.MipLevels = static_cast<UINT>(-1); depthStencilSRVDesc.Texture2D.MipLevels = static_cast<UINT>(-1);
......
...@@ -73,10 +73,6 @@ TextureStorage11::TextureStorage11(Renderer11 *renderer, UINT bindFlags, UINT mi ...@@ -73,10 +73,6 @@ TextureStorage11::TextureStorage11(Renderer11 *renderer, UINT bindFlags, UINT mi
mTopLevel(0), mTopLevel(0),
mMipLevels(0), mMipLevels(0),
mInternalFormat(GL_NONE), mInternalFormat(GL_NONE),
mTextureFormat(DXGI_FORMAT_UNKNOWN),
mShaderResourceFormat(DXGI_FORMAT_UNKNOWN),
mRenderTargetFormat(DXGI_FORMAT_UNKNOWN),
mDepthStencilFormat(DXGI_FORMAT_UNKNOWN),
mTextureWidth(0), mTextureWidth(0),
mTextureHeight(0), mTextureHeight(0),
mTextureDepth(0), mTextureDepth(0),
...@@ -111,15 +107,15 @@ DWORD TextureStorage11::GetTextureBindFlags(GLenum internalFormat, ...@@ -111,15 +107,15 @@ DWORD TextureStorage11::GetTextureBindFlags(GLenum internalFormat,
const d3d11::TextureFormat &formatInfo = const d3d11::TextureFormat &formatInfo =
d3d11::GetTextureFormatInfo(internalFormat, renderer11DeviceCaps); d3d11::GetTextureFormatInfo(internalFormat, renderer11DeviceCaps);
if (formatInfo.srvFormat != DXGI_FORMAT_UNKNOWN) if (formatInfo.formatSet.srvFormat != DXGI_FORMAT_UNKNOWN)
{ {
bindFlags |= D3D11_BIND_SHADER_RESOURCE; bindFlags |= D3D11_BIND_SHADER_RESOURCE;
} }
if (formatInfo.dsvFormat != DXGI_FORMAT_UNKNOWN) if (formatInfo.formatSet.dsvFormat != DXGI_FORMAT_UNKNOWN)
{ {
bindFlags |= D3D11_BIND_DEPTH_STENCIL; bindFlags |= D3D11_BIND_DEPTH_STENCIL;
} }
if (formatInfo.rtvFormat != DXGI_FORMAT_UNKNOWN && renderTarget) if (formatInfo.formatSet.rtvFormat != DXGI_FORMAT_UNKNOWN && renderTarget)
{ {
bindFlags |= D3D11_BIND_RENDER_TARGET; bindFlags |= D3D11_BIND_RENDER_TARGET;
} }
...@@ -138,7 +134,8 @@ DWORD TextureStorage11::GetTextureMiscFlags(GLenum internalFormat, ...@@ -138,7 +134,8 @@ DWORD TextureStorage11::GetTextureMiscFlags(GLenum internalFormat,
d3d11::GetTextureFormatInfo(internalFormat, renderer11DeviceCaps); d3d11::GetTextureFormatInfo(internalFormat, renderer11DeviceCaps);
if (renderTarget && levels > 1) if (renderTarget && levels > 1)
{ {
const d3d11::DXGIFormat &dxgiFormatInfo = d3d11::GetDXGIFormatInfo(formatInfo.texFormat); const d3d11::DXGIFormat &dxgiFormatInfo =
d3d11::GetDXGIFormatInfo(formatInfo.formatSet.texFormat);
if (dxgiFormatInfo.nativeMipmapSupport(renderer11DeviceCaps.featureLevel)) if (dxgiFormatInfo.nativeMipmapSupport(renderer11DeviceCaps.featureLevel))
{ {
...@@ -268,7 +265,8 @@ gl::Error TextureStorage11::getSRV(const gl::TextureState &textureState, ...@@ -268,7 +265,8 @@ gl::Error TextureStorage11::getSRV(const gl::TextureState &textureState,
} }
ID3D11ShaderResourceView *srv = nullptr; ID3D11ShaderResourceView *srv = nullptr;
DXGI_FORMAT format = (swizzleRequired ? mSwizzleShaderResourceFormat : mShaderResourceFormat); DXGI_FORMAT format =
(swizzleRequired ? mSwizzleFormatSet.srvFormat : mTextureFormatSet.srvFormat);
gl::Error error = createSRV(textureState.baseLevel, mipLevels, format, texture, &srv); gl::Error error = createSRV(textureState.baseLevel, mipLevels, format, texture, &srv);
if (error.isError()) if (error.isError())
{ {
...@@ -294,7 +292,8 @@ gl::Error TextureStorage11::getSRVLevel(int mipLevel, ID3D11ShaderResourceView * ...@@ -294,7 +292,8 @@ gl::Error TextureStorage11::getSRVLevel(int mipLevel, ID3D11ShaderResourceView *
return error; return error;
} }
error = createSRV(mipLevel, 1, mShaderResourceFormat, resource, &mLevelSRVs[mipLevel]); error =
createSRV(mipLevel, 1, mTextureFormatSet.srvFormat, resource, &mLevelSRVs[mipLevel]);
if (error.isError()) if (error.isError())
{ {
return error; return error;
...@@ -347,7 +346,7 @@ gl::Error TextureStorage11::getSRVLevels(GLint baseLevel, ...@@ -347,7 +346,7 @@ gl::Error TextureStorage11::getSRVLevels(GLint baseLevel,
} }
ID3D11ShaderResourceView *srv = nullptr; ID3D11ShaderResourceView *srv = nullptr;
error = createSRV(baseLevel, mipLevels, mShaderResourceFormat, texture, &srv); error = createSRV(baseLevel, mipLevels, mTextureFormatSet.srvFormat, texture, &srv);
if (error.isError()) if (error.isError())
{ {
return error; return error;
...@@ -461,8 +460,9 @@ gl::Error TextureStorage11::updateSubresourceLevel(ID3D11Resource *srcTexture, ...@@ -461,8 +460,9 @@ gl::Error TextureStorage11::updateSubresourceLevel(ID3D11Resource *srcTexture,
ASSERT(dstTexture); ASSERT(dstTexture);
const d3d11::DXGIFormat &dxgiFormatInfo = d3d11::GetDXGIFormatInfo(mTextureFormat); const d3d11::DXGIFormat &dxgiFormatInfo = d3d11::GetDXGIFormatInfo(mTextureFormatSet.texFormat);
const d3d11::DXGIFormatSize &dxgiFormatSizeInfo = d3d11::GetDXGIFormatSizeInfo(mTextureFormat); const d3d11::DXGIFormatSize &dxgiFormatSizeInfo =
d3d11::GetDXGIFormatSizeInfo(mTextureFormatSet.texFormat);
if (!fullCopy && (dxgiFormatInfo.depthBits > 0 || dxgiFormatInfo.stencilBits > 0)) if (!fullCopy && (dxgiFormatInfo.depthBits > 0 || dxgiFormatInfo.stencilBits > 0))
{ {
// CopySubresourceRegion cannot copy partial depth stencils, use the blitter instead // CopySubresourceRegion cannot copy partial depth stencils, use the blitter instead
...@@ -533,8 +533,8 @@ gl::Error TextureStorage11::copySubresourceLevel(ID3D11Resource *dstTexture, ...@@ -533,8 +533,8 @@ gl::Error TextureStorage11::copySubresourceLevel(ID3D11Resource *dstTexture,
// However, D3D10Level9 doesn't always perform CopySubresourceRegion correctly unless the // However, D3D10Level9 doesn't always perform CopySubresourceRegion correctly unless the
// source box is specified. This is okay, since we don't perform CopySubresourceRegion on // source box is specified. This is okay, since we don't perform CopySubresourceRegion on
// depth/stencil textures on 9_3. // depth/stencil textures on 9_3.
ASSERT(d3d11::GetDXGIFormatInfo(mTextureFormat).depthBits == 0); ASSERT(d3d11::GetDXGIFormatInfo(mTextureFormatSet.texFormat).depthBits == 0);
ASSERT(d3d11::GetDXGIFormatInfo(mTextureFormat).stencilBits == 0); ASSERT(d3d11::GetDXGIFormatInfo(mTextureFormatSet.texFormat).stencilBits == 0);
srcBox.left = region.x; srcBox.left = region.x;
srcBox.right = region.x + region.width; srcBox.right = region.x + region.width;
srcBox.top = region.y; srcBox.top = region.y;
...@@ -695,7 +695,7 @@ gl::Error TextureStorage11::setData(const gl::ImageIndex &index, ...@@ -695,7 +695,7 @@ gl::Error TextureStorage11::setData(const gl::ImageIndex &index,
const d3d11::TextureFormat &d3d11Format = d3d11::GetTextureFormatInfo( const d3d11::TextureFormat &d3d11Format = d3d11::GetTextureFormatInfo(
image->getInternalFormat(), mRenderer->getRenderer11DeviceCaps()); image->getInternalFormat(), mRenderer->getRenderer11DeviceCaps());
const d3d11::DXGIFormatSize &dxgiFormatInfo = const d3d11::DXGIFormatSize &dxgiFormatInfo =
d3d11::GetDXGIFormatSizeInfo(d3d11Format.texFormat); d3d11::GetDXGIFormatSizeInfo(d3d11Format.formatSet.texFormat);
const size_t outputPixelSize = dxgiFormatInfo.pixelBytes; const size_t outputPixelSize = dxgiFormatInfo.pixelBytes;
...@@ -773,7 +773,7 @@ TextureStorage11_2D::TextureStorage11_2D(Renderer11 *renderer, SwapChain11 *swap ...@@ -773,7 +773,7 @@ TextureStorage11_2D::TextureStorage11_2D(Renderer11 *renderer, SwapChain11 *swap
D3D11_TEXTURE2D_DESC texDesc; D3D11_TEXTURE2D_DESC texDesc;
mTexture->GetDesc(&texDesc); mTexture->GetDesc(&texDesc);
mMipLevels = texDesc.MipLevels; mMipLevels = texDesc.MipLevels;
mTextureFormat = texDesc.Format; mTextureFormatSet.texFormat = texDesc.Format;
mTextureWidth = texDesc.Width; mTextureWidth = texDesc.Width;
mTextureHeight = texDesc.Height; mTextureHeight = texDesc.Height;
mTextureDepth = 1; mTextureDepth = 1;
...@@ -784,21 +784,19 @@ TextureStorage11_2D::TextureStorage11_2D(Renderer11 *renderer, SwapChain11 *swap ...@@ -784,21 +784,19 @@ TextureStorage11_2D::TextureStorage11_2D(Renderer11 *renderer, SwapChain11 *swap
ID3D11ShaderResourceView *srv = swapchain->getRenderTargetShaderResource(); ID3D11ShaderResourceView *srv = swapchain->getRenderTargetShaderResource();
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
srv->GetDesc(&srvDesc); srv->GetDesc(&srvDesc);
mShaderResourceFormat = srvDesc.Format; mTextureFormatSet.srvFormat = srvDesc.Format;
ID3D11RenderTargetView *offscreenRTV = swapchain->getRenderTarget(); ID3D11RenderTargetView *offscreenRTV = swapchain->getRenderTarget();
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
offscreenRTV->GetDesc(&rtvDesc); offscreenRTV->GetDesc(&rtvDesc);
mRenderTargetFormat = rtvDesc.Format; mTextureFormatSet.rtvFormat = rtvDesc.Format;
const d3d11::DXGIFormat &dxgiFormatInfo = d3d11::GetDXGIFormatInfo(mTextureFormat); const d3d11::DXGIFormat &dxgiFormatInfo = d3d11::GetDXGIFormatInfo(mTextureFormatSet.texFormat);
const d3d11::TextureFormat &formatInfo = d3d11::GetTextureFormatInfo( const d3d11::TextureFormat &formatInfo = d3d11::GetTextureFormatInfo(
dxgiFormatInfo.internalFormat, mRenderer->getRenderer11DeviceCaps()); dxgiFormatInfo.internalFormat, mRenderer->getRenderer11DeviceCaps());
mSwizzleTextureFormat = formatInfo.swizzleTexFormat; mSwizzleFormatSet = formatInfo.swizzleFormatSet;
mSwizzleShaderResourceFormat = formatInfo.swizzleSRVFormat;
mSwizzleRenderTargetFormat = formatInfo.swizzleRTVFormat;
mDepthStencilFormat = DXGI_FORMAT_UNKNOWN; mTextureFormatSet.dsvFormat = DXGI_FORMAT_UNKNOWN;
} }
TextureStorage11_2D::TextureStorage11_2D(Renderer11 *renderer, TextureStorage11_2D::TextureStorage11_2D(Renderer11 *renderer,
...@@ -833,15 +831,10 @@ TextureStorage11_2D::TextureStorage11_2D(Renderer11 *renderer, ...@@ -833,15 +831,10 @@ TextureStorage11_2D::TextureStorage11_2D(Renderer11 *renderer,
const d3d11::TextureFormat &formatInfo = const d3d11::TextureFormat &formatInfo =
d3d11::GetTextureFormatInfo(internalformat, renderer->getRenderer11DeviceCaps()); d3d11::GetTextureFormatInfo(internalformat, renderer->getRenderer11DeviceCaps());
mTextureFormat = formatInfo.texFormat; mTextureFormatSet = formatInfo.formatSet;
mShaderResourceFormat = formatInfo.srvFormat; mSwizzleFormatSet = formatInfo.swizzleFormatSet;
mDepthStencilFormat = formatInfo.dsvFormat;
mRenderTargetFormat = formatInfo.rtvFormat; d3d11::MakeValidSize(false, mTextureFormatSet.texFormat, &width, &height, &mTopLevel);
mSwizzleTextureFormat = formatInfo.swizzleTexFormat;
mSwizzleShaderResourceFormat = formatInfo.swizzleSRVFormat;
mSwizzleRenderTargetFormat = formatInfo.swizzleRTVFormat;
d3d11::MakeValidSize(false, mTextureFormat, &width, &height, &mTopLevel);
mMipLevels = mTopLevel + levels; mMipLevels = mTopLevel + levels;
mTextureWidth = width; mTextureWidth = width;
mTextureHeight = height; mTextureHeight = height;
...@@ -1151,7 +1144,7 @@ gl::Error TextureStorage11_2D::ensureTextureExists(int mipLevels) ...@@ -1151,7 +1144,7 @@ gl::Error TextureStorage11_2D::ensureTextureExists(int mipLevels)
desc.Height = mTextureHeight; desc.Height = mTextureHeight;
desc.MipLevels = mipLevels; desc.MipLevels = mipLevels;
desc.ArraySize = 1; desc.ArraySize = 1;
desc.Format = mTextureFormat; desc.Format = mTextureFormatSet.texFormat;
desc.SampleDesc.Count = 1; desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0; desc.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_DEFAULT; desc.Usage = D3D11_USAGE_DEFAULT;
...@@ -1225,7 +1218,7 @@ gl::Error TextureStorage11_2D::getRenderTarget(const gl::ImageIndex &index, Rend ...@@ -1225,7 +1218,7 @@ gl::Error TextureStorage11_2D::getRenderTarget(const gl::ImageIndex &index, Rend
if (!mLevelZeroRenderTarget) if (!mLevelZeroRenderTarget)
{ {
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mRenderTargetFormat; rtvDesc.Format = mTextureFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
rtvDesc.Texture2D.MipSlice = mTopLevel + level; rtvDesc.Texture2D.MipSlice = mTopLevel + level;
...@@ -1253,10 +1246,10 @@ gl::Error TextureStorage11_2D::getRenderTarget(const gl::ImageIndex &index, Rend ...@@ -1253,10 +1246,10 @@ gl::Error TextureStorage11_2D::getRenderTarget(const gl::ImageIndex &index, Rend
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
if (mRenderTargetFormat != DXGI_FORMAT_UNKNOWN) if (mTextureFormatSet.rtvFormat != DXGI_FORMAT_UNKNOWN)
{ {
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mRenderTargetFormat; rtvDesc.Format = mTextureFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
rtvDesc.Texture2D.MipSlice = mTopLevel + level; rtvDesc.Texture2D.MipSlice = mTopLevel + level;
...@@ -1282,10 +1275,10 @@ gl::Error TextureStorage11_2D::getRenderTarget(const gl::ImageIndex &index, Rend ...@@ -1282,10 +1275,10 @@ gl::Error TextureStorage11_2D::getRenderTarget(const gl::ImageIndex &index, Rend
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
ASSERT(mDepthStencilFormat != DXGI_FORMAT_UNKNOWN); ASSERT(mTextureFormatSet.dsvFormat != DXGI_FORMAT_UNKNOWN);
D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc; D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc;
dsvDesc.Format = mDepthStencilFormat; dsvDesc.Format = mTextureFormatSet.dsvFormat;
dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
dsvDesc.Texture2D.MipSlice = mTopLevel + level; dsvDesc.Texture2D.MipSlice = mTopLevel + level;
dsvDesc.Flags = 0; dsvDesc.Flags = 0;
...@@ -1377,7 +1370,7 @@ gl::Error TextureStorage11_2D::getSwizzleTexture(ID3D11Resource **outTexture) ...@@ -1377,7 +1370,7 @@ gl::Error TextureStorage11_2D::getSwizzleTexture(ID3D11Resource **outTexture)
desc.Height = mTextureHeight; desc.Height = mTextureHeight;
desc.MipLevels = mMipLevels; desc.MipLevels = mMipLevels;
desc.ArraySize = 1; desc.ArraySize = 1;
desc.Format = mSwizzleTextureFormat; desc.Format = mSwizzleFormatSet.texFormat;
desc.SampleDesc.Count = 1; desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0; desc.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_DEFAULT; desc.Usage = D3D11_USAGE_DEFAULT;
...@@ -1418,7 +1411,7 @@ gl::Error TextureStorage11_2D::getSwizzleRenderTarget(int mipLevel, ID3D11Render ...@@ -1418,7 +1411,7 @@ gl::Error TextureStorage11_2D::getSwizzleRenderTarget(int mipLevel, ID3D11Render
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mSwizzleRenderTargetFormat; rtvDesc.Format = mSwizzleFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
rtvDesc.Texture2D.MipSlice = mTopLevel + mipLevel; rtvDesc.Texture2D.MipSlice = mTopLevel + mipLevel;
...@@ -1451,7 +1444,7 @@ TextureStorage11_EGLImage::TextureStorage11_EGLImage(Renderer11 *renderer, EGLIm ...@@ -1451,7 +1444,7 @@ TextureStorage11_EGLImage::TextureStorage11_EGLImage(Renderer11 *renderer, EGLIm
mCurrentRenderTarget = reinterpret_cast<uintptr_t>(renderTarget11); mCurrentRenderTarget = reinterpret_cast<uintptr_t>(renderTarget11);
mMipLevels = 1; mMipLevels = 1;
mTextureFormat = renderTarget11->getDXGIFormat(); mTextureFormatSet.texFormat = renderTarget11->getDXGIFormat();
mTextureWidth = renderTarget11->getWidth(); mTextureWidth = renderTarget11->getWidth();
mTextureHeight = renderTarget11->getHeight(); mTextureHeight = renderTarget11->getHeight();
mTextureDepth = 1; mTextureDepth = 1;
...@@ -1460,18 +1453,18 @@ TextureStorage11_EGLImage::TextureStorage11_EGLImage(Renderer11 *renderer, EGLIm ...@@ -1460,18 +1453,18 @@ TextureStorage11_EGLImage::TextureStorage11_EGLImage(Renderer11 *renderer, EGLIm
ID3D11ShaderResourceView *srv = renderTarget11->getShaderResourceView(); ID3D11ShaderResourceView *srv = renderTarget11->getShaderResourceView();
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
srv->GetDesc(&srvDesc); srv->GetDesc(&srvDesc);
mShaderResourceFormat = srvDesc.Format; mTextureFormatSet.srvFormat = srvDesc.Format;
ID3D11RenderTargetView *rtv = renderTarget11->getRenderTargetView(); ID3D11RenderTargetView *rtv = renderTarget11->getRenderTargetView();
if (rtv != nullptr) if (rtv != nullptr)
{ {
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtv->GetDesc(&rtvDesc); rtv->GetDesc(&rtvDesc);
mRenderTargetFormat = rtvDesc.Format; mTextureFormatSet.rtvFormat = rtvDesc.Format;
} }
else else
{ {
mRenderTargetFormat = DXGI_FORMAT_UNKNOWN; mTextureFormatSet.rtvFormat = DXGI_FORMAT_UNKNOWN;
} }
ID3D11DepthStencilView *dsv = renderTarget11->getDepthStencilView(); ID3D11DepthStencilView *dsv = renderTarget11->getDepthStencilView();
...@@ -1479,19 +1472,17 @@ TextureStorage11_EGLImage::TextureStorage11_EGLImage(Renderer11 *renderer, EGLIm ...@@ -1479,19 +1472,17 @@ TextureStorage11_EGLImage::TextureStorage11_EGLImage(Renderer11 *renderer, EGLIm
{ {
D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc; D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc;
dsv->GetDesc(&dsvDesc); dsv->GetDesc(&dsvDesc);
mDepthStencilFormat = dsvDesc.Format; mTextureFormatSet.dsvFormat = dsvDesc.Format;
} }
else else
{ {
mDepthStencilFormat = DXGI_FORMAT_UNKNOWN; mTextureFormatSet.dsvFormat = DXGI_FORMAT_UNKNOWN;
} }
const d3d11::DXGIFormat &dxgiFormatInfo = d3d11::GetDXGIFormatInfo(mTextureFormat); const d3d11::DXGIFormat &dxgiFormatInfo = d3d11::GetDXGIFormatInfo(mTextureFormatSet.texFormat);
const d3d11::TextureFormat &formatInfo = d3d11::GetTextureFormatInfo( const d3d11::TextureFormat &formatInfo = d3d11::GetTextureFormatInfo(
dxgiFormatInfo.internalFormat, mRenderer->getRenderer11DeviceCaps()); dxgiFormatInfo.internalFormat, mRenderer->getRenderer11DeviceCaps());
mSwizzleTextureFormat = formatInfo.swizzleTexFormat; mSwizzleFormatSet = formatInfo.swizzleFormatSet;
mSwizzleShaderResourceFormat = formatInfo.swizzleSRVFormat;
mSwizzleRenderTargetFormat = formatInfo.swizzleRTVFormat;
} }
TextureStorage11_EGLImage::~TextureStorage11_EGLImage() TextureStorage11_EGLImage::~TextureStorage11_EGLImage()
...@@ -1621,7 +1612,7 @@ gl::Error TextureStorage11_EGLImage::getSwizzleTexture(ID3D11Resource **outTextu ...@@ -1621,7 +1612,7 @@ gl::Error TextureStorage11_EGLImage::getSwizzleTexture(ID3D11Resource **outTextu
desc.Height = mTextureHeight; desc.Height = mTextureHeight;
desc.MipLevels = mMipLevels; desc.MipLevels = mMipLevels;
desc.ArraySize = 1; desc.ArraySize = 1;
desc.Format = mSwizzleTextureFormat; desc.Format = mSwizzleFormatSet.texFormat;
desc.SampleDesc.Count = 1; desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0; desc.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_DEFAULT; desc.Usage = D3D11_USAGE_DEFAULT;
...@@ -1663,7 +1654,7 @@ gl::Error TextureStorage11_EGLImage::getSwizzleRenderTarget(int mipLevel, ...@@ -1663,7 +1654,7 @@ gl::Error TextureStorage11_EGLImage::getSwizzleRenderTarget(int mipLevel,
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mSwizzleRenderTargetFormat; rtvDesc.Format = mSwizzleFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
rtvDesc.Texture2D.MipSlice = mTopLevel + mipLevel; rtvDesc.Texture2D.MipSlice = mTopLevel + mipLevel;
...@@ -1802,17 +1793,12 @@ TextureStorage11_Cube::TextureStorage11_Cube(Renderer11 *renderer, ...@@ -1802,17 +1793,12 @@ TextureStorage11_Cube::TextureStorage11_Cube(Renderer11 *renderer,
const d3d11::TextureFormat &formatInfo = const d3d11::TextureFormat &formatInfo =
d3d11::GetTextureFormatInfo(internalformat, renderer->getRenderer11DeviceCaps()); d3d11::GetTextureFormatInfo(internalformat, renderer->getRenderer11DeviceCaps());
mTextureFormat = formatInfo.texFormat; mTextureFormatSet = formatInfo.formatSet;
mShaderResourceFormat = formatInfo.srvFormat; mSwizzleFormatSet = formatInfo.swizzleFormatSet;
mDepthStencilFormat = formatInfo.dsvFormat;
mRenderTargetFormat = formatInfo.rtvFormat;
mSwizzleTextureFormat = formatInfo.swizzleTexFormat;
mSwizzleShaderResourceFormat = formatInfo.swizzleSRVFormat;
mSwizzleRenderTargetFormat = formatInfo.swizzleRTVFormat;
// adjust size if needed for compressed textures // adjust size if needed for compressed textures
int height = size; int height = size;
d3d11::MakeValidSize(false, mTextureFormat, &size, &height, &mTopLevel); d3d11::MakeValidSize(false, mTextureFormatSet.texFormat, &size, &height, &mTopLevel);
mMipLevels = mTopLevel + levels; mMipLevels = mTopLevel + levels;
mTextureWidth = size; mTextureWidth = size;
...@@ -2175,7 +2161,7 @@ gl::Error TextureStorage11_Cube::ensureTextureExists(int mipLevels) ...@@ -2175,7 +2161,7 @@ gl::Error TextureStorage11_Cube::ensureTextureExists(int mipLevels)
desc.Height = mTextureHeight; desc.Height = mTextureHeight;
desc.MipLevels = mipLevels; desc.MipLevels = mipLevels;
desc.ArraySize = CUBE_FACE_COUNT; desc.ArraySize = CUBE_FACE_COUNT;
desc.Format = mTextureFormat; desc.Format = mTextureFormatSet.texFormat;
desc.SampleDesc.Count = 1; desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0; desc.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_DEFAULT; desc.Usage = D3D11_USAGE_DEFAULT;
...@@ -2231,7 +2217,7 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index, ...@@ -2231,7 +2217,7 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index,
if (!mLevelZeroRenderTarget[faceIndex]) if (!mLevelZeroRenderTarget[faceIndex])
{ {
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mRenderTargetFormat; rtvDesc.Format = mTextureFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY;
rtvDesc.Texture2DArray.MipSlice = mTopLevel + level; rtvDesc.Texture2DArray.MipSlice = mTopLevel + level;
rtvDesc.Texture2DArray.FirstArraySlice = faceIndex; rtvDesc.Texture2DArray.FirstArraySlice = faceIndex;
...@@ -2263,7 +2249,7 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index, ...@@ -2263,7 +2249,7 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index,
} }
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
srvDesc.Format = mShaderResourceFormat; srvDesc.Format = mTextureFormatSet.srvFormat;
srvDesc.Texture2DArray.MostDetailedMip = mTopLevel + level; srvDesc.Texture2DArray.MostDetailedMip = mTopLevel + level;
srvDesc.Texture2DArray.MipLevels = 1; srvDesc.Texture2DArray.MipLevels = 1;
srvDesc.Texture2DArray.FirstArraySlice = faceIndex; srvDesc.Texture2DArray.FirstArraySlice = faceIndex;
...@@ -2294,10 +2280,10 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index, ...@@ -2294,10 +2280,10 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index,
d3d11::SetDebugName(srv, "TexStorageCube.RenderTargetSRV"); d3d11::SetDebugName(srv, "TexStorageCube.RenderTargetSRV");
if (mRenderTargetFormat != DXGI_FORMAT_UNKNOWN) if (mTextureFormatSet.rtvFormat != DXGI_FORMAT_UNKNOWN)
{ {
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mRenderTargetFormat; rtvDesc.Format = mTextureFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY;
rtvDesc.Texture2DArray.MipSlice = mTopLevel + level; rtvDesc.Texture2DArray.MipSlice = mTopLevel + level;
rtvDesc.Texture2DArray.FirstArraySlice = faceIndex; rtvDesc.Texture2DArray.FirstArraySlice = faceIndex;
...@@ -2326,10 +2312,10 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index, ...@@ -2326,10 +2312,10 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index,
SafeRelease(rtv); SafeRelease(rtv);
SafeRelease(srv); SafeRelease(srv);
} }
else if (mDepthStencilFormat != DXGI_FORMAT_UNKNOWN) else if (mTextureFormatSet.dsvFormat != DXGI_FORMAT_UNKNOWN)
{ {
D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc; D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc;
dsvDesc.Format = mDepthStencilFormat; dsvDesc.Format = mTextureFormatSet.dsvFormat;
dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DARRAY; dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DARRAY;
dsvDesc.Flags = 0; dsvDesc.Flags = 0;
dsvDesc.Texture2DArray.MipSlice = mTopLevel + level; dsvDesc.Texture2DArray.MipSlice = mTopLevel + level;
...@@ -2450,7 +2436,7 @@ gl::Error TextureStorage11_Cube::getSwizzleTexture(ID3D11Resource **outTexture) ...@@ -2450,7 +2436,7 @@ gl::Error TextureStorage11_Cube::getSwizzleTexture(ID3D11Resource **outTexture)
desc.Height = mTextureHeight; desc.Height = mTextureHeight;
desc.MipLevels = mMipLevels; desc.MipLevels = mMipLevels;
desc.ArraySize = CUBE_FACE_COUNT; desc.ArraySize = CUBE_FACE_COUNT;
desc.Format = mSwizzleTextureFormat; desc.Format = mSwizzleFormatSet.texFormat;
desc.SampleDesc.Count = 1; desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0; desc.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_DEFAULT; desc.Usage = D3D11_USAGE_DEFAULT;
...@@ -2492,7 +2478,7 @@ gl::Error TextureStorage11_Cube::getSwizzleRenderTarget(int mipLevel, ...@@ -2492,7 +2478,7 @@ gl::Error TextureStorage11_Cube::getSwizzleRenderTarget(int mipLevel,
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mSwizzleRenderTargetFormat; rtvDesc.Format = mSwizzleFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY;
rtvDesc.Texture2DArray.MipSlice = mTopLevel + mipLevel; rtvDesc.Texture2DArray.MipSlice = mTopLevel + mipLevel;
rtvDesc.Texture2DArray.FirstArraySlice = 0; rtvDesc.Texture2DArray.FirstArraySlice = 0;
...@@ -2543,16 +2529,11 @@ TextureStorage11_3D::TextureStorage11_3D(Renderer11 *renderer, ...@@ -2543,16 +2529,11 @@ TextureStorage11_3D::TextureStorage11_3D(Renderer11 *renderer,
const d3d11::TextureFormat &formatInfo = const d3d11::TextureFormat &formatInfo =
d3d11::GetTextureFormatInfo(internalformat, renderer->getRenderer11DeviceCaps()); d3d11::GetTextureFormatInfo(internalformat, renderer->getRenderer11DeviceCaps());
mTextureFormat = formatInfo.texFormat; mTextureFormatSet = formatInfo.formatSet;
mShaderResourceFormat = formatInfo.srvFormat; mSwizzleFormatSet = formatInfo.swizzleFormatSet;
mDepthStencilFormat = formatInfo.dsvFormat;
mRenderTargetFormat = formatInfo.rtvFormat;
mSwizzleTextureFormat = formatInfo.swizzleTexFormat;
mSwizzleShaderResourceFormat = formatInfo.swizzleSRVFormat;
mSwizzleRenderTargetFormat = formatInfo.swizzleRTVFormat;
// adjust size if needed for compressed textures // adjust size if needed for compressed textures
d3d11::MakeValidSize(false, mTextureFormat, &width, &height, &mTopLevel); d3d11::MakeValidSize(false, mTextureFormatSet.texFormat, &width, &height, &mTopLevel);
mMipLevels = mTopLevel + levels; mMipLevels = mTopLevel + levels;
mTextureWidth = width; mTextureWidth = width;
...@@ -2692,7 +2673,7 @@ gl::Error TextureStorage11_3D::getResource(ID3D11Resource **outResource) ...@@ -2692,7 +2673,7 @@ gl::Error TextureStorage11_3D::getResource(ID3D11Resource **outResource)
desc.Height = mTextureHeight; desc.Height = mTextureHeight;
desc.Depth = mTextureDepth; desc.Depth = mTextureDepth;
desc.MipLevels = mMipLevels; desc.MipLevels = mMipLevels;
desc.Format = mTextureFormat; desc.Format = mTextureFormatSet.texFormat;
desc.Usage = D3D11_USAGE_DEFAULT; desc.Usage = D3D11_USAGE_DEFAULT;
desc.BindFlags = getBindFlags(); desc.BindFlags = getBindFlags();
desc.CPUAccessFlags = 0; desc.CPUAccessFlags = 0;
...@@ -2755,7 +2736,7 @@ gl::Error TextureStorage11_3D::getRenderTarget(const gl::ImageIndex &index, Rend ...@@ -2755,7 +2736,7 @@ gl::Error TextureStorage11_3D::getRenderTarget(const gl::ImageIndex &index, Rend
const int mipLevel = index.mipIndex; const int mipLevel = index.mipIndex;
ASSERT(mipLevel >= 0 && mipLevel < getLevelCount()); ASSERT(mipLevel >= 0 && mipLevel < getLevelCount());
ASSERT(mRenderTargetFormat != DXGI_FORMAT_UNKNOWN); ASSERT(mTextureFormatSet.rtvFormat != DXGI_FORMAT_UNKNOWN);
if (!index.hasLayer()) if (!index.hasLayer())
{ {
...@@ -2778,7 +2759,7 @@ gl::Error TextureStorage11_3D::getRenderTarget(const gl::ImageIndex &index, Rend ...@@ -2778,7 +2759,7 @@ gl::Error TextureStorage11_3D::getRenderTarget(const gl::ImageIndex &index, Rend
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mRenderTargetFormat; rtvDesc.Format = mTextureFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE3D; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE3D;
rtvDesc.Texture3D.MipSlice = mTopLevel + mipLevel; rtvDesc.Texture3D.MipSlice = mTopLevel + mipLevel;
rtvDesc.Texture3D.FirstWSlice = 0; rtvDesc.Texture3D.FirstWSlice = 0;
...@@ -2832,7 +2813,7 @@ gl::Error TextureStorage11_3D::getRenderTarget(const gl::ImageIndex &index, Rend ...@@ -2832,7 +2813,7 @@ gl::Error TextureStorage11_3D::getRenderTarget(const gl::ImageIndex &index, Rend
ID3D11ShaderResourceView *srv = nullptr; ID3D11ShaderResourceView *srv = nullptr;
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mRenderTargetFormat; rtvDesc.Format = mTextureFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE3D; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE3D;
rtvDesc.Texture3D.MipSlice = mTopLevel + mipLevel; rtvDesc.Texture3D.MipSlice = mTopLevel + mipLevel;
rtvDesc.Texture3D.FirstWSlice = layer; rtvDesc.Texture3D.FirstWSlice = layer;
...@@ -2881,7 +2862,7 @@ gl::Error TextureStorage11_3D::getSwizzleTexture(ID3D11Resource **outTexture) ...@@ -2881,7 +2862,7 @@ gl::Error TextureStorage11_3D::getSwizzleTexture(ID3D11Resource **outTexture)
desc.Height = mTextureHeight; desc.Height = mTextureHeight;
desc.Depth = mTextureDepth; desc.Depth = mTextureDepth;
desc.MipLevels = mMipLevels; desc.MipLevels = mMipLevels;
desc.Format = mSwizzleTextureFormat; desc.Format = mSwizzleFormatSet.texFormat;
desc.Usage = D3D11_USAGE_DEFAULT; desc.Usage = D3D11_USAGE_DEFAULT;
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET; desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
desc.CPUAccessFlags = 0; desc.CPUAccessFlags = 0;
...@@ -2920,7 +2901,7 @@ gl::Error TextureStorage11_3D::getSwizzleRenderTarget(int mipLevel, ID3D11Render ...@@ -2920,7 +2901,7 @@ gl::Error TextureStorage11_3D::getSwizzleRenderTarget(int mipLevel, ID3D11Render
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mSwizzleRenderTargetFormat; rtvDesc.Format = mSwizzleFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE3D; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE3D;
rtvDesc.Texture3D.MipSlice = mTopLevel + mipLevel; rtvDesc.Texture3D.MipSlice = mTopLevel + mipLevel;
rtvDesc.Texture3D.FirstWSlice = 0; rtvDesc.Texture3D.FirstWSlice = 0;
...@@ -2971,16 +2952,11 @@ TextureStorage11_2DArray::TextureStorage11_2DArray(Renderer11 *renderer, ...@@ -2971,16 +2952,11 @@ TextureStorage11_2DArray::TextureStorage11_2DArray(Renderer11 *renderer,
const d3d11::TextureFormat &formatInfo = const d3d11::TextureFormat &formatInfo =
d3d11::GetTextureFormatInfo(internalformat, renderer->getRenderer11DeviceCaps()); d3d11::GetTextureFormatInfo(internalformat, renderer->getRenderer11DeviceCaps());
mTextureFormat = formatInfo.texFormat; mTextureFormatSet = formatInfo.formatSet;
mShaderResourceFormat = formatInfo.srvFormat; mSwizzleFormatSet = formatInfo.swizzleFormatSet;
mDepthStencilFormat = formatInfo.dsvFormat;
mRenderTargetFormat = formatInfo.rtvFormat;
mSwizzleTextureFormat = formatInfo.swizzleTexFormat;
mSwizzleShaderResourceFormat = formatInfo.swizzleSRVFormat;
mSwizzleRenderTargetFormat = formatInfo.swizzleRTVFormat;
// adjust size if needed for compressed textures // adjust size if needed for compressed textures
d3d11::MakeValidSize(false, mTextureFormat, &width, &height, &mTopLevel); d3d11::MakeValidSize(false, mTextureFormatSet.texFormat, &width, &height, &mTopLevel);
mMipLevels = mTopLevel + levels; mMipLevels = mTopLevel + levels;
mTextureWidth = width; mTextureWidth = width;
...@@ -3121,7 +3097,7 @@ gl::Error TextureStorage11_2DArray::getResource(ID3D11Resource **outResource) ...@@ -3121,7 +3097,7 @@ gl::Error TextureStorage11_2DArray::getResource(ID3D11Resource **outResource)
desc.Height = mTextureHeight; desc.Height = mTextureHeight;
desc.MipLevels = mMipLevels; desc.MipLevels = mMipLevels;
desc.ArraySize = mTextureDepth; desc.ArraySize = mTextureDepth;
desc.Format = mTextureFormat; desc.Format = mTextureFormatSet.texFormat;
desc.SampleDesc.Count = 1; desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0; desc.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_DEFAULT; desc.Usage = D3D11_USAGE_DEFAULT;
...@@ -3205,7 +3181,7 @@ gl::Error TextureStorage11_2DArray::getRenderTarget(const gl::ImageIndex &index, ...@@ -3205,7 +3181,7 @@ gl::Error TextureStorage11_2DArray::getRenderTarget(const gl::ImageIndex &index,
} }
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
srvDesc.Format = mShaderResourceFormat; srvDesc.Format = mTextureFormatSet.srvFormat;
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DARRAY; srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DARRAY;
srvDesc.Texture2DArray.MostDetailedMip = mTopLevel + mipLevel; srvDesc.Texture2DArray.MostDetailedMip = mTopLevel + mipLevel;
srvDesc.Texture2DArray.MipLevels = 1; srvDesc.Texture2DArray.MipLevels = 1;
...@@ -3226,10 +3202,10 @@ gl::Error TextureStorage11_2DArray::getRenderTarget(const gl::ImageIndex &index, ...@@ -3226,10 +3202,10 @@ gl::Error TextureStorage11_2DArray::getRenderTarget(const gl::ImageIndex &index,
d3d11::SetDebugName(srv, "TexStorage2DArray.RenderTargetSRV"); d3d11::SetDebugName(srv, "TexStorage2DArray.RenderTargetSRV");
if (mRenderTargetFormat != DXGI_FORMAT_UNKNOWN) if (mTextureFormatSet.rtvFormat != DXGI_FORMAT_UNKNOWN)
{ {
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mRenderTargetFormat; rtvDesc.Format = mTextureFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY;
rtvDesc.Texture2DArray.MipSlice = mTopLevel + mipLevel; rtvDesc.Texture2DArray.MipSlice = mTopLevel + mipLevel;
rtvDesc.Texture2DArray.FirstArraySlice = layer; rtvDesc.Texture2DArray.FirstArraySlice = layer;
...@@ -3280,7 +3256,7 @@ gl::Error TextureStorage11_2DArray::getSwizzleTexture(ID3D11Resource **outTextur ...@@ -3280,7 +3256,7 @@ gl::Error TextureStorage11_2DArray::getSwizzleTexture(ID3D11Resource **outTextur
desc.Height = mTextureHeight; desc.Height = mTextureHeight;
desc.MipLevels = mMipLevels; desc.MipLevels = mMipLevels;
desc.ArraySize = mTextureDepth; desc.ArraySize = mTextureDepth;
desc.Format = mSwizzleTextureFormat; desc.Format = mSwizzleFormatSet.texFormat;
desc.SampleDesc.Count = 1; desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0; desc.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_DEFAULT; desc.Usage = D3D11_USAGE_DEFAULT;
...@@ -3322,7 +3298,7 @@ gl::Error TextureStorage11_2DArray::getSwizzleRenderTarget(int mipLevel, ...@@ -3322,7 +3298,7 @@ gl::Error TextureStorage11_2DArray::getSwizzleRenderTarget(int mipLevel,
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
rtvDesc.Format = mSwizzleRenderTargetFormat; rtvDesc.Format = mSwizzleFormatSet.rtvFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY;
rtvDesc.Texture2DArray.MipSlice = mTopLevel + mipLevel; rtvDesc.Texture2DArray.MipSlice = mTopLevel + mipLevel;
rtvDesc.Texture2DArray.FirstArraySlice = 0; rtvDesc.Texture2DArray.FirstArraySlice = 0;
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "libANGLE/Texture.h" #include "libANGLE/Texture.h"
#include "libANGLE/Error.h" #include "libANGLE/Error.h"
#include "libANGLE/renderer/d3d/TextureStorage.h" #include "libANGLE/renderer/d3d/TextureStorage.h"
#include "libANGLE/renderer/d3d/d3d11/texture_format_table.h"
#include <map> #include <map>
...@@ -103,13 +104,8 @@ class TextureStorage11 : public TextureStorage ...@@ -103,13 +104,8 @@ class TextureStorage11 : public TextureStorage
unsigned int mMipLevels; unsigned int mMipLevels;
GLenum mInternalFormat; GLenum mInternalFormat;
DXGI_FORMAT mTextureFormat; d3d11::DXGIFormatSet mTextureFormatSet;
DXGI_FORMAT mShaderResourceFormat; d3d11::DXGIFormatSet mSwizzleFormatSet;
DXGI_FORMAT mRenderTargetFormat;
DXGI_FORMAT mDepthStencilFormat;
DXGI_FORMAT mSwizzleTextureFormat;
DXGI_FORMAT mSwizzleShaderResourceFormat;
DXGI_FORMAT mSwizzleRenderTargetFormat;
unsigned int mTextureWidth; unsigned int mTextureWidth;
unsigned int mTextureHeight; unsigned int mTextureHeight;
unsigned int mTextureDepth; unsigned int mTextureDepth;
......
...@@ -109,24 +109,32 @@ bool SupportsFormat(const Renderer11DeviceCaps &deviceCaps) ...@@ -109,24 +109,32 @@ bool SupportsFormat(const Renderer11DeviceCaps &deviceCaps)
}} }}
// End Format Support Functions // End Format Support Functions
}} // namespace
DXGIFormatSet::DXGIFormatSet()
: texFormat(DXGI_FORMAT_UNKNOWN),
srvFormat(DXGI_FORMAT_UNKNOWN),
rtvFormat(DXGI_FORMAT_UNKNOWN),
dsvFormat(DXGI_FORMAT_UNKNOWN)
{{
}}
// For sized GL internal formats, there are several possible corresponding D3D11 formats depending // For sized GL internal formats, there are several possible corresponding D3D11 formats depending
// on device capabilities. // on device capabilities.
// This function allows querying for the DXGI texture formats to use for textures, SRVs, RTVs and // This function allows querying for the DXGI texture formats to use for textures, SRVs, RTVs and
// DSVs given a GL internal format. // DSVs given a GL internal format.
const TextureFormat GetD3D11FormatInfo(GLenum internalFormat, TextureFormat::TextureFormat(GLenum internalFormat,
DXGI_FORMAT texFormat, DXGI_FORMAT texFormat,
DXGI_FORMAT srvFormat, DXGI_FORMAT srvFormat,
DXGI_FORMAT rtvFormat, DXGI_FORMAT rtvFormat,
DXGI_FORMAT dsvFormat, DXGI_FORMAT dsvFormat,
InitializeTextureDataFunction internalFormatInitializer) InitializeTextureDataFunction internalFormatInitializer)
: dataInitializerFunction(internalFormatInitializer)
{{ {{
TextureFormat info; formatSet.texFormat = texFormat;
info.texFormat = texFormat; formatSet.srvFormat = srvFormat;
info.srvFormat = srvFormat; formatSet.rtvFormat = rtvFormat;
info.rtvFormat = rtvFormat; formatSet.dsvFormat = dsvFormat;
info.dsvFormat = dsvFormat;
info.dataInitializerFunction = internalFormatInitializer;
// Compute the swizzle formats // Compute the swizzle formats
const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalFormat); const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalFormat);
...@@ -158,47 +166,28 @@ const TextureFormat GetD3D11FormatInfo(GLenum internalFormat, ...@@ -158,47 +166,28 @@ const TextureFormat GetD3D11FormatInfo(GLenum internalFormat,
const SwizzleFormatInfo &swizzleInfo = const SwizzleFormatInfo &swizzleInfo =
GetSwizzleFormatInfo(maxBits, formatInfo.componentType); GetSwizzleFormatInfo(maxBits, formatInfo.componentType);
info.swizzleTexFormat = swizzleInfo.mTexFormat; swizzleFormatSet.texFormat = swizzleInfo.mTexFormat;
info.swizzleSRVFormat = swizzleInfo.mSRVFormat; swizzleFormatSet.srvFormat = swizzleInfo.mSRVFormat;
info.swizzleRTVFormat = swizzleInfo.mRTVFormat; swizzleFormatSet.rtvFormat = swizzleInfo.mRTVFormat;
}} }}
else else
{{ {{
// The original texture format is suitable for swizzle operations // The original texture format is suitable for swizzle operations
info.swizzleTexFormat = texFormat; swizzleFormatSet = formatSet;
info.swizzleSRVFormat = srvFormat;
info.swizzleRTVFormat = rtvFormat;
}} }}
}} }}
else else
{{ {{
// Not possible to swizzle with this texture format since it is either unsized or GL_NONE // Not possible to swizzle with this texture format since it is either unsized or GL_NONE
info.swizzleTexFormat = DXGI_FORMAT_UNKNOWN; ASSERT(swizzleFormatSet.texFormat == DXGI_FORMAT_UNKNOWN);
info.swizzleSRVFormat = DXGI_FORMAT_UNKNOWN; ASSERT(swizzleFormatSet.srvFormat == DXGI_FORMAT_UNKNOWN);
info.swizzleRTVFormat = DXGI_FORMAT_UNKNOWN; ASSERT(swizzleFormatSet.rtvFormat == DXGI_FORMAT_UNKNOWN);
}} }}
// Gather all the load functions for this internal format // Gather all the load functions for this internal format
info.loadFunctions = GetLoadFunctionsMap(internalFormat, texFormat); loadFunctions = GetLoadFunctionsMap(internalFormat, texFormat);
ASSERT(info.loadFunctions.size() != 0 || internalFormat == GL_NONE);
return info; ASSERT(loadFunctions.size() != 0 || internalFormat == GL_NONE);
}}
}} // namespace
TextureFormat::TextureFormat()
: texFormat(DXGI_FORMAT_UNKNOWN),
srvFormat(DXGI_FORMAT_UNKNOWN),
rtvFormat(DXGI_FORMAT_UNKNOWN),
dsvFormat(DXGI_FORMAT_UNKNOWN),
swizzleTexFormat(DXGI_FORMAT_UNKNOWN),
swizzleSRVFormat(DXGI_FORMAT_UNKNOWN),
swizzleRTVFormat(DXGI_FORMAT_UNKNOWN),
dataInitializerFunction(NULL),
loadFunctions()
{{
}} }}
const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
...@@ -213,7 +202,8 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -213,7 +202,8 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}} }}
// clang-format on // clang-format on
static const TextureFormat defaultInfo; static const TextureFormat defaultInfo(GL_NONE, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, nullptr);
return defaultInfo; return defaultInfo;
}} // GetTextureFormatInfo }} // GetTextureFormatInfo
...@@ -312,7 +302,7 @@ def get_texture_format_item(idx, internal_format, requirements_fn, angle_format) ...@@ -312,7 +302,7 @@ def get_texture_format_item(idx, internal_format, requirements_fn, angle_format)
table_data += ' {\n' table_data += ' {\n'
indent += ' ' indent += ' '
table_data += indent + 'static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat,\n' table_data += indent + 'static const TextureFormat textureFormat(internalFormat,\n'
table_data += indent + ' ' + tex_format + ',\n' table_data += indent + ' ' + tex_format + ',\n'
table_data += indent + ' ' + srv_format + ',\n' table_data += indent + ' ' + srv_format + ',\n'
table_data += indent + ' ' + rtv_format + ',\n' table_data += indent + ' ' + rtv_format + ',\n'
......
...@@ -358,19 +358,21 @@ static gl::TextureCaps GenerateTextureFormatCaps(GLint maxClientVersion, GLenum ...@@ -358,19 +358,21 @@ static gl::TextureCaps GenerateTextureFormatCaps(GLint maxClientVersion, GLenum
} }
} }
textureCaps.texturable = support.query(formatInfo.texFormat, texSupportMask); textureCaps.texturable = support.query(formatInfo.formatSet.texFormat, texSupportMask);
textureCaps.filterable = support.query(formatInfo.srvFormat, D3D11_FORMAT_SUPPORT_SHADER_SAMPLE); textureCaps.filterable =
textureCaps.renderable = (support.query(formatInfo.rtvFormat, D3D11_FORMAT_SUPPORT_RENDER_TARGET)) || support.query(formatInfo.formatSet.srvFormat, D3D11_FORMAT_SUPPORT_SHADER_SAMPLE);
(support.query(formatInfo.dsvFormat, D3D11_FORMAT_SUPPORT_DEPTH_STENCIL)); textureCaps.renderable =
(support.query(formatInfo.formatSet.rtvFormat, D3D11_FORMAT_SUPPORT_RENDER_TARGET)) ||
(support.query(formatInfo.formatSet.dsvFormat, D3D11_FORMAT_SUPPORT_DEPTH_STENCIL));
DXGI_FORMAT renderFormat = DXGI_FORMAT_UNKNOWN; DXGI_FORMAT renderFormat = DXGI_FORMAT_UNKNOWN;
if (formatInfo.dsvFormat != DXGI_FORMAT_UNKNOWN) if (formatInfo.formatSet.dsvFormat != DXGI_FORMAT_UNKNOWN)
{ {
renderFormat = formatInfo.dsvFormat; renderFormat = formatInfo.formatSet.dsvFormat;
} }
else if (formatInfo.rtvFormat != DXGI_FORMAT_UNKNOWN) else if (formatInfo.formatSet.rtvFormat != DXGI_FORMAT_UNKNOWN)
{ {
renderFormat = formatInfo.rtvFormat; renderFormat = formatInfo.formatSet.rtvFormat;
} }
if (renderFormat != DXGI_FORMAT_UNKNOWN && if (renderFormat != DXGI_FORMAT_UNKNOWN &&
support.query(renderFormat, D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET)) support.query(renderFormat, D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET))
...@@ -1364,7 +1366,7 @@ void GenerateInitialTextureData(GLint internalFormat, ...@@ -1364,7 +1366,7 @@ void GenerateInitialTextureData(GLint internalFormat,
ASSERT(d3dFormatInfo.dataInitializerFunction != NULL); ASSERT(d3dFormatInfo.dataInitializerFunction != NULL);
const d3d11::DXGIFormatSize &dxgiFormatInfo = const d3d11::DXGIFormatSize &dxgiFormatInfo =
d3d11::GetDXGIFormatSizeInfo(d3dFormatInfo.texFormat); d3d11::GetDXGIFormatSizeInfo(d3dFormatInfo.formatSet.texFormat);
outSubresourceData->resize(mipLevels); outSubresourceData->resize(mipLevels);
outData->resize(mipLevels); outData->resize(mipLevels);
......
...@@ -34,18 +34,29 @@ struct LoadImageFunctionInfo ...@@ -34,18 +34,29 @@ struct LoadImageFunctionInfo
bool requiresConversion; bool requiresConversion;
}; };
struct TextureFormat struct DXGIFormatSet
{ {
TextureFormat(); DXGIFormatSet();
DXGIFormatSet(const DXGIFormatSet &) = default;
DXGIFormatSet &operator=(const DXGIFormatSet &) = default;
DXGI_FORMAT texFormat; DXGI_FORMAT texFormat;
DXGI_FORMAT srvFormat; DXGI_FORMAT srvFormat;
DXGI_FORMAT rtvFormat; DXGI_FORMAT rtvFormat;
DXGI_FORMAT dsvFormat; DXGI_FORMAT dsvFormat;
};
DXGI_FORMAT swizzleTexFormat; struct TextureFormat : public angle::NonCopyable
DXGI_FORMAT swizzleSRVFormat; {
DXGI_FORMAT swizzleRTVFormat; TextureFormat(GLenum internalFormat,
DXGI_FORMAT texFormat,
DXGI_FORMAT srvFormat,
DXGI_FORMAT rtvFormat,
DXGI_FORMAT dsvFormat,
InitializeTextureDataFunction internalFormatInitializer);
DXGIFormatSet formatSet;
DXGIFormatSet swizzleFormatSet;
InitializeTextureDataFunction dataInitializerFunction; InitializeTextureDataFunction dataInitializerFunction;
typedef std::map<GLenum, LoadImageFunctionInfo> LoadFunctionMap; typedef std::map<GLenum, LoadImageFunctionInfo> LoadFunctionMap;
......
...@@ -96,24 +96,32 @@ bool SupportsFormat(const Renderer11DeviceCaps &deviceCaps) ...@@ -96,24 +96,32 @@ bool SupportsFormat(const Renderer11DeviceCaps &deviceCaps)
} }
// End Format Support Functions // End Format Support Functions
} // namespace
DXGIFormatSet::DXGIFormatSet()
: texFormat(DXGI_FORMAT_UNKNOWN),
srvFormat(DXGI_FORMAT_UNKNOWN),
rtvFormat(DXGI_FORMAT_UNKNOWN),
dsvFormat(DXGI_FORMAT_UNKNOWN)
{
}
// For sized GL internal formats, there are several possible corresponding D3D11 formats depending // For sized GL internal formats, there are several possible corresponding D3D11 formats depending
// on device capabilities. // on device capabilities.
// This function allows querying for the DXGI texture formats to use for textures, SRVs, RTVs and // This function allows querying for the DXGI texture formats to use for textures, SRVs, RTVs and
// DSVs given a GL internal format. // DSVs given a GL internal format.
const TextureFormat GetD3D11FormatInfo(GLenum internalFormat, TextureFormat::TextureFormat(GLenum internalFormat,
DXGI_FORMAT texFormat, DXGI_FORMAT texFormat,
DXGI_FORMAT srvFormat, DXGI_FORMAT srvFormat,
DXGI_FORMAT rtvFormat, DXGI_FORMAT rtvFormat,
DXGI_FORMAT dsvFormat, DXGI_FORMAT dsvFormat,
InitializeTextureDataFunction internalFormatInitializer) InitializeTextureDataFunction internalFormatInitializer)
: dataInitializerFunction(internalFormatInitializer)
{ {
TextureFormat info; formatSet.texFormat = texFormat;
info.texFormat = texFormat; formatSet.srvFormat = srvFormat;
info.srvFormat = srvFormat; formatSet.rtvFormat = rtvFormat;
info.rtvFormat = rtvFormat; formatSet.dsvFormat = dsvFormat;
info.dsvFormat = dsvFormat;
info.dataInitializerFunction = internalFormatInitializer;
// Compute the swizzle formats // Compute the swizzle formats
const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalFormat); const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalFormat);
...@@ -145,47 +153,28 @@ const TextureFormat GetD3D11FormatInfo(GLenum internalFormat, ...@@ -145,47 +153,28 @@ const TextureFormat GetD3D11FormatInfo(GLenum internalFormat,
const SwizzleFormatInfo &swizzleInfo = const SwizzleFormatInfo &swizzleInfo =
GetSwizzleFormatInfo(maxBits, formatInfo.componentType); GetSwizzleFormatInfo(maxBits, formatInfo.componentType);
info.swizzleTexFormat = swizzleInfo.mTexFormat; swizzleFormatSet.texFormat = swizzleInfo.mTexFormat;
info.swizzleSRVFormat = swizzleInfo.mSRVFormat; swizzleFormatSet.srvFormat = swizzleInfo.mSRVFormat;
info.swizzleRTVFormat = swizzleInfo.mRTVFormat; swizzleFormatSet.rtvFormat = swizzleInfo.mRTVFormat;
} }
else else
{ {
// The original texture format is suitable for swizzle operations // The original texture format is suitable for swizzle operations
info.swizzleTexFormat = texFormat; swizzleFormatSet = formatSet;
info.swizzleSRVFormat = srvFormat;
info.swizzleRTVFormat = rtvFormat;
} }
} }
else else
{ {
// Not possible to swizzle with this texture format since it is either unsized or GL_NONE // Not possible to swizzle with this texture format since it is either unsized or GL_NONE
info.swizzleTexFormat = DXGI_FORMAT_UNKNOWN; ASSERT(swizzleFormatSet.texFormat == DXGI_FORMAT_UNKNOWN);
info.swizzleSRVFormat = DXGI_FORMAT_UNKNOWN; ASSERT(swizzleFormatSet.srvFormat == DXGI_FORMAT_UNKNOWN);
info.swizzleRTVFormat = DXGI_FORMAT_UNKNOWN; ASSERT(swizzleFormatSet.rtvFormat == DXGI_FORMAT_UNKNOWN);
} }
// Gather all the load functions for this internal format // Gather all the load functions for this internal format
info.loadFunctions = GetLoadFunctionsMap(internalFormat, texFormat); loadFunctions = GetLoadFunctionsMap(internalFormat, texFormat);
ASSERT(info.loadFunctions.size() != 0 || internalFormat == GL_NONE);
return info; ASSERT(loadFunctions.size() != 0 || internalFormat == GL_NONE);
}
} // namespace
TextureFormat::TextureFormat()
: texFormat(DXGI_FORMAT_UNKNOWN),
srvFormat(DXGI_FORMAT_UNKNOWN),
rtvFormat(DXGI_FORMAT_UNKNOWN),
dsvFormat(DXGI_FORMAT_UNKNOWN),
swizzleTexFormat(DXGI_FORMAT_UNKNOWN),
swizzleSRVFormat(DXGI_FORMAT_UNKNOWN),
swizzleRTVFormat(DXGI_FORMAT_UNKNOWN),
dataInitializerFunction(NULL),
loadFunctions()
{
} }
const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
...@@ -198,7 +187,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -198,7 +187,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM,
DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM,
DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM,
...@@ -208,7 +197,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -208,7 +197,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (OnlyFL9_3(renderer11DeviceCaps)) else if (OnlyFL9_3(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -223,7 +212,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -223,7 +212,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_ALPHA16F_EXT: case GL_ALPHA16F_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
...@@ -233,7 +222,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -233,7 +222,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_ALPHA32F_EXT: case GL_ALPHA32F_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
...@@ -245,7 +234,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -245,7 +234,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM,
DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM,
DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM,
...@@ -255,7 +244,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -255,7 +244,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (OnlyFL9_3(renderer11DeviceCaps)) else if (OnlyFL9_3(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -270,7 +259,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -270,7 +259,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_BGR5_A1_ANGLEX: case GL_BGR5_A1_ANGLEX:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
...@@ -280,7 +269,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -280,7 +269,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_BGRA4_ANGLEX: case GL_BGRA4_ANGLEX:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
...@@ -290,7 +279,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -290,7 +279,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_BGRA8_EXT: case GL_BGRA8_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
...@@ -300,7 +289,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -300,7 +289,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_BGRA_EXT: case GL_BGRA_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
...@@ -312,7 +301,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -312,7 +301,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM,
DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -329,7 +318,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -329,7 +318,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8G8_UNORM,
DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8G8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -346,7 +335,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -346,7 +335,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -363,7 +352,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -363,7 +352,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -380,7 +369,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -380,7 +369,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -395,7 +384,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -395,7 +384,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM,
DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -405,7 +394,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -405,7 +394,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_BC2_UNORM,
DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_BC2_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -415,7 +404,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -415,7 +404,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_BC3_UNORM,
DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_BC3_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -425,7 +414,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -425,7 +414,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM,
DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -437,7 +426,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -437,7 +426,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8_SNORM, DXGI_FORMAT_R8_SNORM,
DXGI_FORMAT_R8_SNORM, DXGI_FORMAT_R8_SNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -454,7 +443,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -454,7 +443,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8_SNORM, DXGI_FORMAT_R8G8_SNORM,
DXGI_FORMAT_R8G8_SNORM, DXGI_FORMAT_R8G8_SNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -471,7 +460,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -471,7 +460,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -488,7 +477,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -488,7 +477,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -505,7 +494,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -505,7 +494,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -522,7 +511,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -522,7 +511,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_R24G8_TYPELESS,
DXGI_FORMAT_R24_UNORM_X8_TYPELESS, DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -532,7 +521,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -532,7 +521,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (OnlyFL9_3(renderer11DeviceCaps)) else if (OnlyFL9_3(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_D24_UNORM_S8_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -549,7 +538,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -549,7 +538,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G8X24_TYPELESS, DXGI_FORMAT_R32G8X24_TYPELESS,
DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS, DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -559,7 +548,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -559,7 +548,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (OnlyFL9_3(renderer11DeviceCaps)) else if (OnlyFL9_3(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -576,7 +565,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -576,7 +565,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16_TYPELESS, DXGI_FORMAT_R16_TYPELESS,
DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -586,7 +575,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -586,7 +575,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (OnlyFL9_3(renderer11DeviceCaps)) else if (OnlyFL9_3(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_D16_UNORM, DXGI_FORMAT_D16_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -603,7 +592,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -603,7 +592,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_R24G8_TYPELESS,
DXGI_FORMAT_R24_UNORM_X8_TYPELESS, DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -613,7 +602,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -613,7 +602,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (OnlyFL9_3(renderer11DeviceCaps)) else if (OnlyFL9_3(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_D24_UNORM_S8_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -630,7 +619,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -630,7 +619,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32_TYPELESS, DXGI_FORMAT_R32_TYPELESS,
DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_R32_FLOAT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -640,7 +629,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -640,7 +629,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (OnlyFL9_3(renderer11DeviceCaps)) else if (OnlyFL9_3(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -657,7 +646,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -657,7 +646,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_R24G8_TYPELESS,
DXGI_FORMAT_R24_UNORM_X8_TYPELESS, DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -672,7 +661,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -672,7 +661,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE: case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM,
DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -682,7 +671,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -682,7 +671,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_ETC1_RGB8_OES: case GL_ETC1_RGB8_OES:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -692,7 +681,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -692,7 +681,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_LUMINANCE: case GL_LUMINANCE:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -702,7 +691,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -702,7 +691,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_LUMINANCE16F_EXT: case GL_LUMINANCE16F_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
...@@ -712,7 +701,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -712,7 +701,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_LUMINANCE32F_EXT: case GL_LUMINANCE32F_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
...@@ -722,7 +711,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -722,7 +711,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_LUMINANCE8_ALPHA8_EXT: case GL_LUMINANCE8_ALPHA8_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -732,7 +721,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -732,7 +721,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_LUMINANCE8_EXT: case GL_LUMINANCE8_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -742,7 +731,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -742,7 +731,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_LUMINANCE_ALPHA: case GL_LUMINANCE_ALPHA:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -752,7 +741,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -752,7 +741,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_LUMINANCE_ALPHA16F_EXT: case GL_LUMINANCE_ALPHA16F_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
...@@ -762,7 +751,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -762,7 +751,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_LUMINANCE_ALPHA32F_EXT: case GL_LUMINANCE_ALPHA32F_EXT:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
...@@ -772,7 +761,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -772,7 +761,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_NONE: case GL_NONE:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -782,7 +771,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -782,7 +771,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R11F_G11F_B10F: case GL_R11F_G11F_B10F:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R11G11B10_FLOAT, DXGI_FORMAT_R11G11B10_FLOAT,
DXGI_FORMAT_R11G11B10_FLOAT, DXGI_FORMAT_R11G11B10_FLOAT,
DXGI_FORMAT_R11G11B10_FLOAT, DXGI_FORMAT_R11G11B10_FLOAT,
...@@ -792,7 +781,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -792,7 +781,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R16F: case GL_R16F:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_R16_FLOAT,
DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_R16_FLOAT,
DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_R16_FLOAT,
...@@ -802,7 +791,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -802,7 +791,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R16I: case GL_R16I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16_SINT, DXGI_FORMAT_R16_SINT,
DXGI_FORMAT_R16_SINT, DXGI_FORMAT_R16_SINT,
DXGI_FORMAT_R16_SINT, DXGI_FORMAT_R16_SINT,
...@@ -812,7 +801,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -812,7 +801,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R16UI: case GL_R16UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_UINT,
DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_UINT,
DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_UINT,
...@@ -822,7 +811,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -822,7 +811,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R32F: case GL_R32F:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_R32_FLOAT,
DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_R32_FLOAT,
DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_R32_FLOAT,
...@@ -832,7 +821,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -832,7 +821,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R32I: case GL_R32I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32_SINT, DXGI_FORMAT_R32_SINT,
DXGI_FORMAT_R32_SINT, DXGI_FORMAT_R32_SINT,
DXGI_FORMAT_R32_SINT, DXGI_FORMAT_R32_SINT,
...@@ -842,7 +831,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -842,7 +831,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R32UI: case GL_R32UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32_UINT, DXGI_FORMAT_R32_UINT,
DXGI_FORMAT_R32_UINT, DXGI_FORMAT_R32_UINT,
DXGI_FORMAT_R32_UINT, DXGI_FORMAT_R32_UINT,
...@@ -852,7 +841,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -852,7 +841,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R8: case GL_R8:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM,
DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM,
DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM,
...@@ -862,7 +851,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -862,7 +851,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R8I: case GL_R8I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8_SINT, DXGI_FORMAT_R8_SINT,
DXGI_FORMAT_R8_SINT, DXGI_FORMAT_R8_SINT,
DXGI_FORMAT_R8_SINT, DXGI_FORMAT_R8_SINT,
...@@ -872,7 +861,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -872,7 +861,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R8UI: case GL_R8UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_UINT,
DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_UINT,
DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_UINT,
...@@ -882,7 +871,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -882,7 +871,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_R8_SNORM: case GL_R8_SNORM:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8_SNORM, DXGI_FORMAT_R8_SNORM,
DXGI_FORMAT_R8_SNORM, DXGI_FORMAT_R8_SNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -892,7 +881,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -892,7 +881,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RG16F: case GL_RG16F:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16_FLOAT, DXGI_FORMAT_R16G16_FLOAT,
DXGI_FORMAT_R16G16_FLOAT, DXGI_FORMAT_R16G16_FLOAT,
DXGI_FORMAT_R16G16_FLOAT, DXGI_FORMAT_R16G16_FLOAT,
...@@ -902,7 +891,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -902,7 +891,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RG16I: case GL_RG16I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16_SINT, DXGI_FORMAT_R16G16_SINT,
DXGI_FORMAT_R16G16_SINT, DXGI_FORMAT_R16G16_SINT,
DXGI_FORMAT_R16G16_SINT, DXGI_FORMAT_R16G16_SINT,
...@@ -912,7 +901,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -912,7 +901,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RG16UI: case GL_RG16UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_UINT,
DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_UINT,
DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_UINT,
...@@ -922,7 +911,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -922,7 +911,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RG32F: case GL_RG32F:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32_FLOAT, DXGI_FORMAT_R32G32_FLOAT,
DXGI_FORMAT_R32G32_FLOAT, DXGI_FORMAT_R32G32_FLOAT,
DXGI_FORMAT_R32G32_FLOAT, DXGI_FORMAT_R32G32_FLOAT,
...@@ -932,7 +921,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -932,7 +921,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RG32I: case GL_RG32I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32_SINT, DXGI_FORMAT_R32G32_SINT,
DXGI_FORMAT_R32G32_SINT, DXGI_FORMAT_R32G32_SINT,
DXGI_FORMAT_R32G32_SINT, DXGI_FORMAT_R32G32_SINT,
...@@ -942,7 +931,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -942,7 +931,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RG32UI: case GL_RG32UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32_UINT, DXGI_FORMAT_R32G32_UINT,
DXGI_FORMAT_R32G32_UINT, DXGI_FORMAT_R32G32_UINT,
DXGI_FORMAT_R32G32_UINT, DXGI_FORMAT_R32G32_UINT,
...@@ -952,7 +941,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -952,7 +941,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RG8: case GL_RG8:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8G8_UNORM,
DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8G8_UNORM,
DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8G8_UNORM,
...@@ -962,7 +951,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -962,7 +951,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RG8I: case GL_RG8I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8_SINT, DXGI_FORMAT_R8G8_SINT,
DXGI_FORMAT_R8G8_SINT, DXGI_FORMAT_R8G8_SINT,
DXGI_FORMAT_R8G8_SINT, DXGI_FORMAT_R8G8_SINT,
...@@ -972,7 +961,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -972,7 +961,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RG8UI: case GL_RG8UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8_UINT, DXGI_FORMAT_R8G8_UINT,
DXGI_FORMAT_R8G8_UINT, DXGI_FORMAT_R8G8_UINT,
DXGI_FORMAT_R8G8_UINT, DXGI_FORMAT_R8G8_UINT,
...@@ -982,7 +971,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -982,7 +971,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RG8_SNORM: case GL_RG8_SNORM:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8_SNORM, DXGI_FORMAT_R8G8_SNORM,
DXGI_FORMAT_R8G8_SNORM, DXGI_FORMAT_R8G8_SNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -992,7 +981,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -992,7 +981,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB: case GL_RGB:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -1002,7 +991,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1002,7 +991,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB10_A2: case GL_RGB10_A2:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UNORM,
DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UNORM,
DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UNORM,
...@@ -1012,7 +1001,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1012,7 +1001,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB10_A2UI: case GL_RGB10_A2UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R10G10B10A2_UINT, DXGI_FORMAT_R10G10B10A2_UINT,
DXGI_FORMAT_R10G10B10A2_UINT, DXGI_FORMAT_R10G10B10A2_UINT,
DXGI_FORMAT_R10G10B10A2_UINT, DXGI_FORMAT_R10G10B10A2_UINT,
...@@ -1022,7 +1011,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1022,7 +1011,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB16F: case GL_RGB16F:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
...@@ -1032,7 +1021,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1032,7 +1021,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB16I: case GL_RGB16I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SINT,
DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SINT,
DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SINT,
...@@ -1042,7 +1031,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1042,7 +1031,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB16UI: case GL_RGB16UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UINT,
DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UINT,
DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UINT,
...@@ -1052,7 +1041,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1052,7 +1041,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB32F: case GL_RGB32F:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
...@@ -1062,7 +1051,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1062,7 +1051,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB32I: case GL_RGB32I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32B32A32_SINT, DXGI_FORMAT_R32G32B32A32_SINT,
DXGI_FORMAT_R32G32B32A32_SINT, DXGI_FORMAT_R32G32B32A32_SINT,
DXGI_FORMAT_R32G32B32A32_SINT, DXGI_FORMAT_R32G32B32A32_SINT,
...@@ -1072,7 +1061,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1072,7 +1061,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB32UI: case GL_RGB32UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32B32A32_UINT, DXGI_FORMAT_R32G32B32A32_UINT,
DXGI_FORMAT_R32G32B32A32_UINT, DXGI_FORMAT_R32G32B32A32_UINT,
DXGI_FORMAT_R32G32B32A32_UINT, DXGI_FORMAT_R32G32B32A32_UINT,
...@@ -1084,7 +1073,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1084,7 +1073,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (SupportsFormat<DXGI_FORMAT_B5G6R5_UNORM,false>(renderer11DeviceCaps)) if (SupportsFormat<DXGI_FORMAT_B5G6R5_UNORM,false>(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -1094,7 +1083,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1094,7 +1083,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (SupportsFormat<DXGI_FORMAT_B5G6R5_UNORM,true>(renderer11DeviceCaps)) else if (SupportsFormat<DXGI_FORMAT_B5G6R5_UNORM,true>(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G6R5_UNORM,
DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G6R5_UNORM,
DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G6R5_UNORM,
...@@ -1111,7 +1100,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1111,7 +1100,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (SupportsFormat<DXGI_FORMAT_B5G5R5A1_UNORM,false>(renderer11DeviceCaps)) if (SupportsFormat<DXGI_FORMAT_B5G5R5A1_UNORM,false>(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -1121,7 +1110,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1121,7 +1110,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (SupportsFormat<DXGI_FORMAT_B5G5R5A1_UNORM,true>(renderer11DeviceCaps)) else if (SupportsFormat<DXGI_FORMAT_B5G5R5A1_UNORM,true>(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM,
DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM,
DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM,
...@@ -1136,7 +1125,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1136,7 +1125,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB8: case GL_RGB8:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -1146,7 +1135,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1146,7 +1135,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB8I: case GL_RGB8I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SINT,
DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SINT,
DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SINT,
...@@ -1156,7 +1145,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1156,7 +1145,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB8UI: case GL_RGB8UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_UINT,
DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_UINT,
DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_UINT,
...@@ -1166,7 +1155,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1166,7 +1155,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB8_SNORM: case GL_RGB8_SNORM:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_SNORM, DXGI_FORMAT_R8G8B8A8_SNORM,
DXGI_FORMAT_R8G8B8A8_SNORM, DXGI_FORMAT_R8G8B8A8_SNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -1176,7 +1165,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1176,7 +1165,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGB9_E5: case GL_RGB9_E5:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R9G9B9E5_SHAREDEXP, DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
DXGI_FORMAT_R9G9B9E5_SHAREDEXP, DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -1186,7 +1175,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1186,7 +1175,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA: case GL_RGBA:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -1196,7 +1185,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1196,7 +1185,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA16F: case GL_RGBA16F:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
...@@ -1206,7 +1195,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1206,7 +1195,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA16I: case GL_RGBA16I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SINT,
DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SINT,
DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SINT,
...@@ -1216,7 +1205,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1216,7 +1205,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA16UI: case GL_RGBA16UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UINT,
DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UINT,
DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UINT,
...@@ -1226,7 +1215,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1226,7 +1215,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA32F: case GL_RGBA32F:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
...@@ -1236,7 +1225,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1236,7 +1225,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA32I: case GL_RGBA32I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32B32A32_SINT, DXGI_FORMAT_R32G32B32A32_SINT,
DXGI_FORMAT_R32G32B32A32_SINT, DXGI_FORMAT_R32G32B32A32_SINT,
DXGI_FORMAT_R32G32B32A32_SINT, DXGI_FORMAT_R32G32B32A32_SINT,
...@@ -1246,7 +1235,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1246,7 +1235,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA32UI: case GL_RGBA32UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R32G32B32A32_UINT, DXGI_FORMAT_R32G32B32A32_UINT,
DXGI_FORMAT_R32G32B32A32_UINT, DXGI_FORMAT_R32G32B32A32_UINT,
DXGI_FORMAT_R32G32B32A32_UINT, DXGI_FORMAT_R32G32B32A32_UINT,
...@@ -1258,7 +1247,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1258,7 +1247,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (SupportsFormat<DXGI_FORMAT_B4G4R4A4_UNORM,false>(renderer11DeviceCaps)) if (SupportsFormat<DXGI_FORMAT_B4G4R4A4_UNORM,false>(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -1268,7 +1257,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1268,7 +1257,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (SupportsFormat<DXGI_FORMAT_B4G4R4A4_UNORM,true>(renderer11DeviceCaps)) else if (SupportsFormat<DXGI_FORMAT_B4G4R4A4_UNORM,true>(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_B4G4R4A4_UNORM, DXGI_FORMAT_B4G4R4A4_UNORM,
DXGI_FORMAT_B4G4R4A4_UNORM, DXGI_FORMAT_B4G4R4A4_UNORM,
DXGI_FORMAT_B4G4R4A4_UNORM, DXGI_FORMAT_B4G4R4A4_UNORM,
...@@ -1283,7 +1272,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1283,7 +1272,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA8: case GL_RGBA8:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
...@@ -1293,7 +1282,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1293,7 +1282,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA8I: case GL_RGBA8I:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SINT,
DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SINT,
DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SINT,
...@@ -1303,7 +1292,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1303,7 +1292,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA8UI: case GL_RGBA8UI:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_UINT,
DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_UINT,
DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_UINT,
...@@ -1313,7 +1302,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1313,7 +1302,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_RGBA8_SNORM: case GL_RGBA8_SNORM:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_SNORM, DXGI_FORMAT_R8G8B8A8_SNORM,
DXGI_FORMAT_R8G8B8A8_SNORM, DXGI_FORMAT_R8G8B8A8_SNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -1323,7 +1312,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1323,7 +1312,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_SRGB8: case GL_SRGB8:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -1333,7 +1322,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1333,7 +1322,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
case GL_SRGB8_ALPHA8: case GL_SRGB8_ALPHA8:
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
...@@ -1345,7 +1334,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1345,7 +1334,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{ {
if (OnlyFL10Plus(renderer11DeviceCaps)) if (OnlyFL10Plus(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_R24G8_TYPELESS,
DXGI_FORMAT_X24_TYPELESS_G8_UINT, DXGI_FORMAT_X24_TYPELESS_G8_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -1355,7 +1344,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1355,7 +1344,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
else if (OnlyFL9_3(renderer11DeviceCaps)) else if (OnlyFL9_3(renderer11DeviceCaps))
{ {
static const TextureFormat textureFormat = GetD3D11FormatInfo(internalFormat, static const TextureFormat textureFormat(internalFormat,
DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_D24_UNORM_S8_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
...@@ -1374,7 +1363,8 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat, ...@@ -1374,7 +1363,8 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
} }
// clang-format on // clang-format on
static const TextureFormat defaultInfo; static const TextureFormat defaultInfo(GL_NONE, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, nullptr);
return defaultInfo; return defaultInfo;
} // GetTextureFormatInfo } // GetTextureFormatInfo
......
...@@ -64,13 +64,15 @@ TEST_P(D3D11FormatTablesTest, TestFormatSupport) ...@@ -64,13 +64,15 @@ TEST_P(D3D11FormatTablesTest, TestFormatSupport)
} }
UINT texSupport; UINT texSupport;
bool texSuccess = SUCCEEDED(device->CheckFormatSupport(formatInfo.texFormat, &texSupport)); bool texSuccess =
SUCCEEDED(device->CheckFormatSupport(formatInfo.formatSet.texFormat, &texSupport));
bool textureable = texSuccess && ((texSupport & texSupportMask) == texSupportMask); bool textureable = texSuccess && ((texSupport & texSupportMask) == texSupportMask);
EXPECT_EQ(textureable, textureInfo.texturable); EXPECT_EQ(textureable, textureInfo.texturable);
// Bits for filtering // Bits for filtering
UINT filterSupport; UINT filterSupport;
bool filterSuccess = SUCCEEDED(device->CheckFormatSupport(formatInfo.srvFormat, &filterSupport)); bool filterSuccess =
SUCCEEDED(device->CheckFormatSupport(formatInfo.formatSet.srvFormat, &filterSupport));
bool filterable = filterSuccess && ((filterSupport & D3D11_FORMAT_SUPPORT_SHADER_SAMPLE) != 0); bool filterable = filterSuccess && ((filterSupport & D3D11_FORMAT_SUPPORT_SHADER_SAMPLE) != 0);
EXPECT_EQ(filterable, textureInfo.filterable); EXPECT_EQ(filterable, textureInfo.filterable);
...@@ -80,25 +82,25 @@ TEST_P(D3D11FormatTablesTest, TestFormatSupport) ...@@ -80,25 +82,25 @@ TEST_P(D3D11FormatTablesTest, TestFormatSupport)
DXGI_FORMAT renderFormat = DXGI_FORMAT_UNKNOWN; DXGI_FORMAT renderFormat = DXGI_FORMAT_UNKNOWN;
if (internalFormatInfo.depthBits > 0 || internalFormatInfo.stencilBits > 0) if (internalFormatInfo.depthBits > 0 || internalFormatInfo.stencilBits > 0)
{ {
renderFormat = formatInfo.dsvFormat; renderFormat = formatInfo.formatSet.dsvFormat;
bool depthSuccess = bool depthSuccess = SUCCEEDED(
SUCCEEDED(device->CheckFormatSupport(formatInfo.dsvFormat, &renderSupport)); device->CheckFormatSupport(formatInfo.formatSet.dsvFormat, &renderSupport));
renderable = renderable =
depthSuccess && ((renderSupport & D3D11_FORMAT_SUPPORT_DEPTH_STENCIL) != 0); depthSuccess && ((renderSupport & D3D11_FORMAT_SUPPORT_DEPTH_STENCIL) != 0);
if (renderable) if (renderable)
{ {
EXPECT_NE(DXGI_FORMAT_UNKNOWN, formatInfo.dsvFormat); EXPECT_NE(DXGI_FORMAT_UNKNOWN, formatInfo.formatSet.dsvFormat);
} }
} }
else else
{ {
renderFormat = formatInfo.rtvFormat; renderFormat = formatInfo.formatSet.rtvFormat;
bool rtSuccess = bool rtSuccess = SUCCEEDED(
SUCCEEDED(device->CheckFormatSupport(formatInfo.rtvFormat, &renderSupport)); device->CheckFormatSupport(formatInfo.formatSet.rtvFormat, &renderSupport));
renderable = rtSuccess && ((renderSupport & D3D11_FORMAT_SUPPORT_RENDER_TARGET) != 0); renderable = rtSuccess && ((renderSupport & D3D11_FORMAT_SUPPORT_RENDER_TARGET) != 0);
if (renderable) if (renderable)
{ {
EXPECT_NE(DXGI_FORMAT_UNKNOWN, formatInfo.rtvFormat); EXPECT_NE(DXGI_FORMAT_UNKNOWN, formatInfo.formatSet.rtvFormat);
} }
} }
EXPECT_EQ(renderable, textureInfo.renderable); EXPECT_EQ(renderable, textureInfo.renderable);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment