Commit 114d129d by Olli Etuaho

D3D11: Get color read function from ANGLE format

This is done to make it possible to change some of the DXGI formats of integer textures without affecting their color read function associations. The packPixels function gets the ANGLE format from the texture helper, which now requires the ANGLE format to be passed in at the time of creation. BUG=angleproject:1244 TEST=angle_end2end_tests, dEQP-GLES3.functional.fbo.* (no regressions), dEQP-GLES3.functional.pbo.* (all pass) Change-Id: I368337cfe5f8c86ff3292009ccf29e9d01409a07 Reviewed-on: https://chromium-review.googlesource.com/329213Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
parent 3b3657be
...@@ -1322,7 +1322,8 @@ gl::Error Buffer11::PackStorage::packPixels(const gl::FramebufferAttachment &rea ...@@ -1322,7 +1322,8 @@ gl::Error Buffer11::PackStorage::packPixels(const gl::FramebufferAttachment &rea
ASSERT(renderTargetResource); ASSERT(renderTargetResource);
unsigned int srcSubresource = renderTarget->getSubresourceIndex(); unsigned int srcSubresource = renderTarget->getSubresourceIndex();
TextureHelper11 srcTexture = TextureHelper11::MakeAndReference(renderTargetResource); TextureHelper11 srcTexture =
TextureHelper11::MakeAndReference(renderTargetResource, renderTarget->getANGLEFormat());
mQueuedPackCommand.reset(new PackPixelsParams(params)); mQueuedPackCommand.reset(new PackPixelsParams(params));
...@@ -1330,9 +1331,9 @@ gl::Error Buffer11::PackStorage::packPixels(const gl::FramebufferAttachment &rea ...@@ -1330,9 +1331,9 @@ gl::Error Buffer11::PackStorage::packPixels(const gl::FramebufferAttachment &rea
if (!mStagingTexture.getResource() || mStagingTexture.getFormat() != srcTexture.getFormat() || if (!mStagingTexture.getResource() || mStagingTexture.getFormat() != srcTexture.getFormat() ||
mStagingTexture.getExtents() != srcTextureSize) mStagingTexture.getExtents() != srcTextureSize)
{ {
auto textureOrError = auto textureOrError = CreateStagingTexture(
CreateStagingTexture(srcTexture.getTextureType(), srcTexture.getFormat(), srcTexture.getTextureType(), srcTexture.getFormat(), srcTexture.getANGLEFormat(),
srcTextureSize, mRenderer->getDevice()); srcTextureSize, mRenderer->getDevice());
if (textureOrError.isError()) if (textureOrError.isError())
{ {
return textureOrError.getError(); return textureOrError.getError();
......
...@@ -327,7 +327,8 @@ gl::Error Image11::copyFromTexStorage(const gl::ImageIndex &imageIndex, TextureS ...@@ -327,7 +327,8 @@ gl::Error Image11::copyFromTexStorage(const gl::ImageIndex &imageIndex, TextureS
} }
UINT subresourceIndex = storage11->getSubresourceIndex(imageIndex); UINT subresourceIndex = storage11->getSubresourceIndex(imageIndex);
TextureHelper11 textureHelper = TextureHelper11::MakeAndReference(resource); TextureHelper11 textureHelper =
TextureHelper11::MakeAndReference(resource, storage11->getANGLEFormat());
gl::Box sourceBox(0, 0, 0, mWidth, mHeight, mDepth); gl::Box sourceBox(0, 0, 0, mWidth, mHeight, mDepth);
return copyWithoutConversion(gl::Offset(), sourceBox, textureHelper, subresourceIndex); return copyWithoutConversion(gl::Offset(), sourceBox, textureHelper, subresourceIndex);
...@@ -355,7 +356,8 @@ gl::Error Image11::copyFromFramebuffer(const gl::Offset &destOffset, ...@@ -355,7 +356,8 @@ gl::Error Image11::copyFromFramebuffer(const gl::Offset &destOffset,
RenderTarget11 *rt11 = GetAs<RenderTarget11>(renderTarget); RenderTarget11 *rt11 = GetAs<RenderTarget11>(renderTarget);
ASSERT(rt11->getTexture()); ASSERT(rt11->getTexture());
TextureHelper11 textureHelper = TextureHelper11::MakeAndReference(rt11->getTexture()); TextureHelper11 textureHelper =
TextureHelper11::MakeAndReference(rt11->getTexture(), rt11->getANGLEFormat());
unsigned int sourceSubResource = rt11->getSubresourceIndex(); unsigned int sourceSubResource = rt11->getSubresourceIndex();
gl::Box sourceBox(sourceArea.x, sourceArea.y, 0, sourceArea.width, sourceArea.height, 1); gl::Box sourceBox(sourceArea.x, sourceArea.y, 0, sourceArea.width, sourceArea.height, 1);
......
...@@ -3575,7 +3575,8 @@ gl::Error Renderer11::readFromAttachment(const gl::FramebufferAttachment &srcAtt ...@@ -3575,7 +3575,8 @@ gl::Error Renderer11::readFromAttachment(const gl::FramebufferAttachment &srcAtt
RenderTarget11 *rt11 = GetAs<RenderTarget11>(renderTarget); RenderTarget11 *rt11 = GetAs<RenderTarget11>(renderTarget);
ASSERT(rt11->getTexture()); ASSERT(rt11->getTexture());
TextureHelper11 textureHelper = TextureHelper11::MakeAndReference(rt11->getTexture()); TextureHelper11 textureHelper =
TextureHelper11::MakeAndReference(rt11->getTexture(), rt11->getANGLEFormat());
unsigned int sourceSubResource = rt11->getSubresourceIndex(); unsigned int sourceSubResource = rt11->getSubresourceIndex();
const gl::Extents &texSize = textureHelper.getExtents(); const gl::Extents &texSize = textureHelper.getExtents();
...@@ -3607,8 +3608,9 @@ gl::Error Renderer11::readFromAttachment(const gl::FramebufferAttachment &srcAtt ...@@ -3607,8 +3608,9 @@ gl::Error Renderer11::readFromAttachment(const gl::FramebufferAttachment &srcAtt
} }
gl::Extents safeSize(safeArea.width, safeArea.height, 1); gl::Extents safeSize(safeArea.width, safeArea.height, 1);
auto errorOrResult = CreateStagingTexture(textureHelper.getTextureType(), auto errorOrResult =
textureHelper.getFormat(), safeSize, mDevice); CreateStagingTexture(textureHelper.getTextureType(), textureHelper.getFormat(),
textureHelper.getANGLEFormat(), safeSize, mDevice);
if (errorOrResult.isError()) if (errorOrResult.isError())
{ {
return errorOrResult.getError(); return errorOrResult.getError();
...@@ -3648,7 +3650,8 @@ gl::Error Renderer11::readFromAttachment(const gl::FramebufferAttachment &srcAtt ...@@ -3648,7 +3650,8 @@ gl::Error Renderer11::readFromAttachment(const gl::FramebufferAttachment &srcAtt
mDeviceContext->ResolveSubresource(resolveTex2D, 0, textureHelper.getTexture2D(), mDeviceContext->ResolveSubresource(resolveTex2D, 0, textureHelper.getTexture2D(),
sourceSubResource, textureHelper.getFormat()); sourceSubResource, textureHelper.getFormat());
resolvedTextureHelper = TextureHelper11::MakeAndReference(resolveTex2D); resolvedTextureHelper =
TextureHelper11::MakeAndReference(resolveTex2D, textureHelper.getANGLEFormat());
sourceSubResource = 0; sourceSubResource = 0;
srcTexture = &resolvedTextureHelper; srcTexture = &resolvedTextureHelper;
...@@ -3757,7 +3760,8 @@ gl::Error Renderer11::packPixels(const TextureHelper11 &textureHelper, ...@@ -3757,7 +3760,8 @@ gl::Error Renderer11::packPixels(const TextureHelper11 &textureHelper,
} }
else else
{ {
ColorReadFunction colorReadFunction = dxgiFormatInfo.colorReadFunction; const auto &angleFormatInfo = d3d11::GetANGLEFormatSet(textureHelper.getANGLEFormat());
ColorReadFunction colorReadFunction = angleFormatInfo.colorReadFunction;
ColorWriteFunction colorWriteFunction = GetColorWriteFunction(params.format, params.type); ColorWriteFunction colorWriteFunction = GetColorWriteFunction(params.format, params.type);
uint8_t temp[16]; // Maximum size of any Color<T> type used. uint8_t temp[16]; // Maximum size of any Color<T> type used.
......
...@@ -358,6 +358,11 @@ gl::Error TextureStorage11::getSRVLevels(GLint baseLevel, ...@@ -358,6 +358,11 @@ gl::Error TextureStorage11::getSRVLevels(GLint baseLevel,
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
d3d11::ANGLEFormat TextureStorage11::getANGLEFormat() const
{
return mTextureFormatSet.format;
}
gl::Error TextureStorage11::generateSwizzles(GLenum swizzleRed, gl::Error TextureStorage11::generateSwizzles(GLenum swizzleRed,
GLenum swizzleGreen, GLenum swizzleGreen,
GLenum swizzleBlue, GLenum swizzleBlue,
......
...@@ -78,6 +78,8 @@ class TextureStorage11 : public TextureStorage ...@@ -78,6 +78,8 @@ class TextureStorage11 : public TextureStorage
gl::Error getSRVLevels(GLint baseLevel, GLint maxLevel, ID3D11ShaderResourceView **outSRV); gl::Error getSRVLevels(GLint baseLevel, GLint maxLevel, ID3D11ShaderResourceView **outSRV);
d3d11::ANGLEFormat getANGLEFormat() const;
protected: protected:
TextureStorage11(Renderer11 *renderer, UINT bindFlags, UINT miscFlags); TextureStorage11(Renderer11 *renderer, UINT bindFlags, UINT miscFlags);
int getLevelWidth(int mipLevel) const; int getLevelWidth(int mipLevel) const;
......
...@@ -281,7 +281,6 @@ DXGIFormat::DXGIFormat() ...@@ -281,7 +281,6 @@ DXGIFormat::DXGIFormat()
stencilBits(0), stencilBits(0),
internalFormat(GL_NONE), internalFormat(GL_NONE),
componentType(GL_NONE), componentType(GL_NONE),
colorReadFunction(NULL),
fastCopyFunctions(), fastCopyFunctions(),
nativeMipmapSupport(NULL) nativeMipmapSupport(NULL)
{ {
...@@ -307,7 +306,6 @@ ColorCopyFunction DXGIFormat::getFastCopyFunction(GLenum format, GLenum type) co ...@@ -307,7 +306,6 @@ ColorCopyFunction DXGIFormat::getFastCopyFunction(GLenum format, GLenum type) co
void AddDXGIFormat(DXGIFormatInfoMap *map, void AddDXGIFormat(DXGIFormatInfoMap *map,
DXGI_FORMAT dxgiFormat, DXGI_FORMAT dxgiFormat,
GLenum componentType, GLenum componentType,
ColorReadFunction readFunc,
NativeMipmapGenerationSupportFunction nativeMipmapSupport) NativeMipmapGenerationSupportFunction nativeMipmapSupport)
{ {
DXGIFormat info; DXGIFormat info;
...@@ -339,8 +337,6 @@ void AddDXGIFormat(DXGIFormatInfoMap *map, ...@@ -339,8 +337,6 @@ void AddDXGIFormat(DXGIFormatInfoMap *map,
info.componentType = componentType; info.componentType = componentType;
info.colorReadFunction = readFunc;
static const D3D11FastCopyMap fastCopyMap = BuildFastCopyMap(); static const D3D11FastCopyMap fastCopyMap = BuildFastCopyMap();
std::pair<D3D11FastCopyMap::const_iterator, D3D11FastCopyMap::const_iterator> fastCopyIter = fastCopyMap.equal_range(dxgiFormat); std::pair<D3D11FastCopyMap::const_iterator, D3D11FastCopyMap::const_iterator> fastCopyIter = fastCopyMap.equal_range(dxgiFormat);
for (D3D11FastCopyMap::const_iterator i = fastCopyIter.first; i != fastCopyIter.second; i++) for (D3D11FastCopyMap::const_iterator i = fastCopyIter.first; i != fastCopyIter.second; i++)
...@@ -360,85 +356,85 @@ static DXGIFormatInfoMap BuildDXGIFormatInfoMap() ...@@ -360,85 +356,85 @@ static DXGIFormatInfoMap BuildDXGIFormatInfoMap()
// clang-format off // clang-format off
// | DXGI format | Component Type | Color read function | Native mipmap function // | DXGI format | Component Type | Color read function | Native mipmap function
AddDXGIFormat(&map, DXGI_FORMAT_UNKNOWN, GL_NONE, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_UNKNOWN, GL_NONE, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_A8_UNORM, GL_UNSIGNED_NORMALIZED, ReadColor<A8, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>); AddDXGIFormat(&map, DXGI_FORMAT_A8_UNORM, GL_UNSIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>);
AddDXGIFormat(&map, DXGI_FORMAT_R8_UNORM, GL_UNSIGNED_NORMALIZED, ReadColor<R8, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>); AddDXGIFormat(&map, DXGI_FORMAT_R8_UNORM, GL_UNSIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>);
AddDXGIFormat(&map, DXGI_FORMAT_R8G8_UNORM, GL_UNSIGNED_NORMALIZED, ReadColor<R8G8, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>); AddDXGIFormat(&map, DXGI_FORMAT_R8G8_UNORM, GL_UNSIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>);
AddDXGIFormat(&map, DXGI_FORMAT_R8G8B8A8_UNORM, GL_UNSIGNED_NORMALIZED, ReadColor<R8G8B8A8, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_1>); AddDXGIFormat(&map, DXGI_FORMAT_R8G8B8A8_UNORM, GL_UNSIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_1>);
AddDXGIFormat(&map, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, GL_UNSIGNED_NORMALIZED, ReadColor<R8G8B8A8, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_1>); AddDXGIFormat(&map, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, GL_UNSIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_1>);
AddDXGIFormat(&map, DXGI_FORMAT_B8G8R8A8_UNORM, GL_UNSIGNED_NORMALIZED, ReadColor<B8G8R8A8, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_1>); AddDXGIFormat(&map, DXGI_FORMAT_B8G8R8A8_UNORM, GL_UNSIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_1>);
AddDXGIFormat(&map, DXGI_FORMAT_R8_SNORM, GL_SIGNED_NORMALIZED, ReadColor<R8S, GLfloat> , RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>); AddDXGIFormat(&map, DXGI_FORMAT_R8_SNORM, GL_SIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>);
AddDXGIFormat(&map, DXGI_FORMAT_R8G8_SNORM, GL_SIGNED_NORMALIZED, ReadColor<R8G8S, GLfloat> , RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>); AddDXGIFormat(&map, DXGI_FORMAT_R8G8_SNORM, GL_SIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>);
AddDXGIFormat(&map, DXGI_FORMAT_R8G8B8A8_SNORM, GL_SIGNED_NORMALIZED, ReadColor<R8G8B8A8S, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>); AddDXGIFormat(&map, DXGI_FORMAT_R8G8B8A8_SNORM, GL_SIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>);
AddDXGIFormat(&map, DXGI_FORMAT_R8_UINT, GL_UNSIGNED_INT, ReadColor<R8, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R8_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16_UINT, GL_UNSIGNED_INT, ReadColor<R16, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32_UINT, GL_UNSIGNED_INT, ReadColor<R32, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R8G8_UINT, GL_UNSIGNED_INT, ReadColor<R8G8, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R8G8_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16G16_UINT, GL_UNSIGNED_INT, ReadColor<R16G16, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16G16_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32G32_UINT, GL_UNSIGNED_INT, ReadColor<R32G32, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32G32_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32_UINT, GL_UNSIGNED_INT, ReadColor<R32G32B32, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R8G8B8A8_UINT, GL_UNSIGNED_INT, ReadColor<R8G8B8A8, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R8G8B8A8_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16G16B16A16_UINT, GL_UNSIGNED_INT, ReadColor<R16G16B16A16, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16G16B16A16_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32A32_UINT, GL_UNSIGNED_INT, ReadColor<R32G32B32A32, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32A32_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R8_SINT, GL_INT, ReadColor<R8S, GLint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R8_SINT, GL_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16_SINT, GL_INT, ReadColor<R16S, GLint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16_SINT, GL_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32_SINT, GL_INT, ReadColor<R32S, GLint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32_SINT, GL_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R8G8_SINT, GL_INT, ReadColor<R8G8S, GLint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R8G8_SINT, GL_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16G16_SINT, GL_INT, ReadColor<R16G16S, GLint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16G16_SINT, GL_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32G32_SINT, GL_INT, ReadColor<R32G32S, GLint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32G32_SINT, GL_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32_SINT, GL_INT, ReadColor<R32G32B32S, GLint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32_SINT, GL_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R8G8B8A8_SINT, GL_INT, ReadColor<R8G8B8A8S, GLint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R8G8B8A8_SINT, GL_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16G16B16A16_SINT, GL_INT, ReadColor<R16G16B16A16S, GLint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16G16B16A16_SINT, GL_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32A32_SINT, GL_INT, ReadColor<R32G32B32A32S, GLint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32A32_SINT, GL_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R10G10B10A2_UNORM, GL_UNSIGNED_NORMALIZED, ReadColor<R10G10B10A2, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>); AddDXGIFormat(&map, DXGI_FORMAT_R10G10B10A2_UNORM, GL_UNSIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>);
AddDXGIFormat(&map, DXGI_FORMAT_R10G10B10A2_UINT, GL_UNSIGNED_INT, ReadColor<R10G10B10A2, GLuint>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R10G10B10A2_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16_FLOAT, GL_FLOAT, ReadColor<R16F, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>); AddDXGIFormat(&map, DXGI_FORMAT_R16_FLOAT, GL_FLOAT, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>);
AddDXGIFormat(&map, DXGI_FORMAT_R16G16_FLOAT, GL_FLOAT, ReadColor<R16G16F, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_2>); AddDXGIFormat(&map, DXGI_FORMAT_R16G16_FLOAT, GL_FLOAT, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_2>);
AddDXGIFormat(&map, DXGI_FORMAT_R16G16B16A16_FLOAT, GL_FLOAT, ReadColor<R16G16B16A16F, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_2>); AddDXGIFormat(&map, DXGI_FORMAT_R16G16B16A16_FLOAT, GL_FLOAT, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_2>);
AddDXGIFormat(&map, DXGI_FORMAT_R32_FLOAT, GL_FLOAT, ReadColor<R32F, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_2>); AddDXGIFormat(&map, DXGI_FORMAT_R32_FLOAT, GL_FLOAT, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_2>);
AddDXGIFormat(&map, DXGI_FORMAT_R32G32_FLOAT, GL_FLOAT, ReadColor<R32G32F, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>); AddDXGIFormat(&map, DXGI_FORMAT_R32G32_FLOAT, GL_FLOAT, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>);
AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32_FLOAT, GL_FLOAT, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32_FLOAT, GL_FLOAT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32A32_FLOAT, GL_FLOAT, ReadColor<R32G32B32A32F, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_3>); AddDXGIFormat(&map, DXGI_FORMAT_R32G32B32A32_FLOAT, GL_FLOAT, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_3>);
AddDXGIFormat(&map, DXGI_FORMAT_R9G9B9E5_SHAREDEXP, GL_FLOAT, ReadColor<R9G9B9E5, GLfloat>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R9G9B9E5_SHAREDEXP, GL_FLOAT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R11G11B10_FLOAT, GL_FLOAT, ReadColor<R11G11B10F, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>); AddDXGIFormat(&map, DXGI_FORMAT_R11G11B10_FLOAT, GL_FLOAT, RequiresFeatureLevel<D3D_FEATURE_LEVEL_10_0>);
AddDXGIFormat(&map, DXGI_FORMAT_R16_TYPELESS, GL_NONE, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16_TYPELESS, GL_NONE, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16_UNORM, GL_UNSIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16_UNORM, GL_UNSIGNED_NORMALIZED, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_D16_UNORM, GL_UNSIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_D16_UNORM, GL_UNSIGNED_NORMALIZED, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R24G8_TYPELESS, GL_NONE, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R24G8_TYPELESS, GL_NONE, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R24_UNORM_X8_TYPELESS, GL_NONE, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R24_UNORM_X8_TYPELESS, GL_NONE, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_D24_UNORM_S8_UINT, GL_UNSIGNED_INT, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_D24_UNORM_S8_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32G8X24_TYPELESS, GL_NONE, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32G8X24_TYPELESS, GL_NONE, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS, GL_NONE, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS, GL_NONE, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_D32_FLOAT_S8X24_UINT, GL_UNSIGNED_INT, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_D32_FLOAT_S8X24_UINT, GL_UNSIGNED_INT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R32_TYPELESS, GL_NONE, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R32_TYPELESS, GL_NONE, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_D32_FLOAT, GL_FLOAT, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_D32_FLOAT, GL_FLOAT, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_BC1_UNORM, GL_UNSIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_BC1_UNORM, GL_UNSIGNED_NORMALIZED, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_BC2_UNORM, GL_UNSIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_BC2_UNORM, GL_UNSIGNED_NORMALIZED, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_BC3_UNORM, GL_UNSIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_BC3_UNORM, GL_UNSIGNED_NORMALIZED, NeverSupported);
// B5G6R5 in D3D11 is treated the same as R5G6B5 in D3D9, so reuse the R5G6B5 functions used by the D3D9 renderer. // B5G6R5 in D3D11 is treated the same as R5G6B5 in D3D9, so reuse the R5G6B5 functions used by the D3D9 renderer.
// The same applies to B4G4R4A4 and B5G5R5A1 with A4R4G4B4 and A1R5G5B5 respectively. // The same applies to B4G4R4A4 and B5G5R5A1 with A4R4G4B4 and A1R5G5B5 respectively.
AddDXGIFormat(&map, DXGI_FORMAT_B5G6R5_UNORM, GL_UNSIGNED_NORMALIZED, ReadColor<R5G6B5, GLfloat>, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_1>); AddDXGIFormat(&map, DXGI_FORMAT_B5G6R5_UNORM, GL_UNSIGNED_NORMALIZED, RequiresFeatureLevel<D3D_FEATURE_LEVEL_9_1>);
AddDXGIFormat(&map, DXGI_FORMAT_B4G4R4A4_UNORM, GL_UNSIGNED_NORMALIZED, ReadColor<A4R4G4B4, GLfloat>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_B4G4R4A4_UNORM, GL_UNSIGNED_NORMALIZED, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_B5G5R5A1_UNORM, GL_UNSIGNED_NORMALIZED, ReadColor<A1R5G5B5, GLfloat>, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_B5G5R5A1_UNORM, GL_UNSIGNED_NORMALIZED, NeverSupported);
// Useful formats for vertex buffers // Useful formats for vertex buffers
AddDXGIFormat(&map, DXGI_FORMAT_R16_UNORM, GL_UNSIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16_UNORM, GL_UNSIGNED_NORMALIZED, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16_SNORM, GL_SIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16_SNORM, GL_SIGNED_NORMALIZED, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16G16_UNORM, GL_UNSIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16G16_UNORM, GL_UNSIGNED_NORMALIZED, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16G16_SNORM, GL_SIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16G16_SNORM, GL_SIGNED_NORMALIZED, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16G16B16A16_UNORM, GL_UNSIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16G16B16A16_UNORM, GL_UNSIGNED_NORMALIZED, NeverSupported);
AddDXGIFormat(&map, DXGI_FORMAT_R16G16B16A16_SNORM, GL_SIGNED_NORMALIZED, nullptr, NeverSupported); AddDXGIFormat(&map, DXGI_FORMAT_R16G16B16A16_SNORM, GL_SIGNED_NORMALIZED, NeverSupported);
// clang-format on // clang-format on
return map; return map;
......
...@@ -43,8 +43,6 @@ struct DXGIFormat ...@@ -43,8 +43,6 @@ struct DXGIFormat
GLenum internalFormat; GLenum internalFormat;
GLenum componentType; GLenum componentType;
ColorReadFunction colorReadFunction;
FastCopyFunctionMap fastCopyFunctions; FastCopyFunctionMap fastCopyFunctions;
NativeMipmapGenerationSupportFunction nativeMipmapSupport; NativeMipmapGenerationSupportFunction nativeMipmapSupport;
......
...@@ -52,6 +52,7 @@ template_texture_format_table_autogen_cpp = """// GENERATED FILE - DO NOT EDIT. ...@@ -52,6 +52,7 @@ template_texture_format_table_autogen_cpp = """// GENERATED FILE - DO NOT EDIT.
#include "libANGLE/renderer/d3d/d3d11/formatutils11.h" #include "libANGLE/renderer/d3d/d3d11/formatutils11.h"
#include "libANGLE/renderer/d3d/d3d11/load_functions_table.h" #include "libANGLE/renderer/d3d/d3d11/load_functions_table.h"
#include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h" #include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
#include "libANGLE/renderer/d3d/copyimage.h"
#include "libANGLE/renderer/d3d/generatemip.h" #include "libANGLE/renderer/d3d/generatemip.h"
#include "libANGLE/renderer/d3d/loadimage.h" #include "libANGLE/renderer/d3d/loadimage.h"
...@@ -144,7 +145,8 @@ ANGLEFormatSet::ANGLEFormatSet() ...@@ -144,7 +145,8 @@ ANGLEFormatSet::ANGLEFormatSet()
rtvFormat(DXGI_FORMAT_UNKNOWN), rtvFormat(DXGI_FORMAT_UNKNOWN),
dsvFormat(DXGI_FORMAT_UNKNOWN), dsvFormat(DXGI_FORMAT_UNKNOWN),
swizzleFormat(ANGLE_FORMAT_NONE), swizzleFormat(ANGLE_FORMAT_NONE),
mipGenerationFunction(nullptr) mipGenerationFunction(nullptr),
colorReadFunction(nullptr)
{{ {{
}} }}
...@@ -173,7 +175,8 @@ ANGLEFormatSet::ANGLEFormatSet(ANGLEFormat format, ...@@ -173,7 +175,8 @@ ANGLEFormatSet::ANGLEFormatSet(ANGLEFormat format,
DXGI_FORMAT rtvFormat, DXGI_FORMAT rtvFormat,
DXGI_FORMAT dsvFormat, DXGI_FORMAT dsvFormat,
ANGLEFormat swizzleFormat, ANGLEFormat swizzleFormat,
MipGenerationFunction mipGenerationFunction) MipGenerationFunction mipGenerationFunction,
ColorReadFunction colorReadFunction)
: format(format), : format(format),
glInternalFormat(glInternalFormat), glInternalFormat(glInternalFormat),
texFormat(texFormat), texFormat(texFormat),
...@@ -181,7 +184,8 @@ ANGLEFormatSet::ANGLEFormatSet(ANGLEFormat format, ...@@ -181,7 +184,8 @@ ANGLEFormatSet::ANGLEFormatSet(ANGLEFormat format,
rtvFormat(rtvFormat), rtvFormat(rtvFormat),
dsvFormat(dsvFormat), dsvFormat(dsvFormat),
swizzleFormat(swizzleFormat), swizzleFormat(swizzleFormat),
mipGenerationFunction(mipGenerationFunction) mipGenerationFunction(mipGenerationFunction),
colorReadFunction(colorReadFunction)
{{ {{
}} }}
...@@ -424,6 +428,19 @@ def get_mip_generation_function(angle_format): ...@@ -424,6 +428,19 @@ def get_mip_generation_function(angle_format):
return 'nullptr' return 'nullptr'
return 'GenerateMip<' + channel_struct + '>' return 'GenerateMip<' + channel_struct + '>'
def get_color_read_function(angle_format):
channel_struct = get_channel_struct(angle_format)
if channel_struct == None:
return 'nullptr'
component_type_map = {
'uint': 'GLuint',
'int': 'GLint',
'unorm': 'GLfloat',
'snorm': 'GLfloat',
'float': 'GLfloat'
}
return 'ReadColor<' + channel_struct + ', '+ component_type_map[angle_format['componentType']] + '>'
def parse_json_into_switch_angle_format_string(json_data): def parse_json_into_switch_angle_format_string(json_data):
table_data = '' table_data = ''
for angle_format_item in sorted(json_data.iteritems()): for angle_format_item in sorted(json_data.iteritems()):
...@@ -436,6 +453,7 @@ def parse_json_into_switch_angle_format_string(json_data): ...@@ -436,6 +453,7 @@ def parse_json_into_switch_angle_format_string(json_data):
dsv_format = angle_format["dsvFormat"] if "dsvFormat" in angle_format else "DXGI_FORMAT_UNKNOWN" dsv_format = angle_format["dsvFormat"] if "dsvFormat" in angle_format else "DXGI_FORMAT_UNKNOWN"
swizzle_format = get_swizzle_format_id(angle_format_item[0], angle_format) swizzle_format = get_swizzle_format_id(angle_format_item[0], angle_format)
mip_generation_function = get_mip_generation_function(angle_format) mip_generation_function = get_mip_generation_function(angle_format)
color_read_function = get_color_read_function(angle_format)
table_data += ' {\n' table_data += ' {\n'
table_data += ' static const ANGLEFormatSet formatInfo(' + angle_format_item[0] + ',\n' table_data += ' static const ANGLEFormatSet formatInfo(' + angle_format_item[0] + ',\n'
table_data += ' ' + gl_internal_format + ',\n' table_data += ' ' + gl_internal_format + ',\n'
...@@ -444,7 +462,8 @@ def parse_json_into_switch_angle_format_string(json_data): ...@@ -444,7 +462,8 @@ def parse_json_into_switch_angle_format_string(json_data):
table_data += ' ' + rtv_format + ',\n' table_data += ' ' + rtv_format + ',\n'
table_data += ' ' + dsv_format + ',\n' table_data += ' ' + dsv_format + ',\n'
table_data += ' ' + swizzle_format + ',\n' table_data += ' ' + swizzle_format + ',\n'
table_data += ' ' + mip_generation_function + ');\n' table_data += ' ' + mip_generation_function + ',\n'
table_data += ' ' + color_read_function + ');\n'
table_data += ' return formatInfo;\n' table_data += ' return formatInfo;\n'
table_data += ' }\n' table_data += ' }\n'
return table_data return table_data
......
...@@ -1526,6 +1526,7 @@ void InitConstantBufferDesc(D3D11_BUFFER_DESC *constantBufferDescription, size_t ...@@ -1526,6 +1526,7 @@ void InitConstantBufferDesc(D3D11_BUFFER_DESC *constantBufferDescription, size_t
TextureHelper11::TextureHelper11() TextureHelper11::TextureHelper11()
: mTextureType(GL_NONE), : mTextureType(GL_NONE),
mFormat(DXGI_FORMAT_UNKNOWN), mFormat(DXGI_FORMAT_UNKNOWN),
mANGLEFormat(d3d11::ANGLE_FORMAT_NONE),
mSampleCount(0), mSampleCount(0),
mTexture2D(nullptr), mTexture2D(nullptr),
mTexture3D(nullptr) mTexture3D(nullptr)
...@@ -1536,6 +1537,7 @@ TextureHelper11::TextureHelper11(TextureHelper11 &&toCopy) ...@@ -1536,6 +1537,7 @@ TextureHelper11::TextureHelper11(TextureHelper11 &&toCopy)
: mTextureType(toCopy.mTextureType), : mTextureType(toCopy.mTextureType),
mExtents(toCopy.mExtents), mExtents(toCopy.mExtents),
mFormat(toCopy.mFormat), mFormat(toCopy.mFormat),
mANGLEFormat(toCopy.mANGLEFormat),
mSampleCount(toCopy.mSampleCount), mSampleCount(toCopy.mSampleCount),
mTexture2D(toCopy.mTexture2D), mTexture2D(toCopy.mTexture2D),
mTexture3D(toCopy.mTexture3D) mTexture3D(toCopy.mTexture3D)
...@@ -1544,9 +1546,11 @@ TextureHelper11::TextureHelper11(TextureHelper11 &&toCopy) ...@@ -1544,9 +1546,11 @@ TextureHelper11::TextureHelper11(TextureHelper11 &&toCopy)
} }
// static // static
TextureHelper11 TextureHelper11::MakeAndReference(ID3D11Resource *genericResource) TextureHelper11 TextureHelper11::MakeAndReference(ID3D11Resource *genericResource,
d3d11::ANGLEFormat angleFormat)
{ {
TextureHelper11 newHelper; TextureHelper11 newHelper;
newHelper.mANGLEFormat = angleFormat;
newHelper.mTexture2D = d3d11::DynamicCastComObject<ID3D11Texture2D>(genericResource); newHelper.mTexture2D = d3d11::DynamicCastComObject<ID3D11Texture2D>(genericResource);
newHelper.mTexture3D = d3d11::DynamicCastComObject<ID3D11Texture3D>(genericResource); newHelper.mTexture3D = d3d11::DynamicCastComObject<ID3D11Texture3D>(genericResource);
newHelper.mTextureType = newHelper.mTexture2D ? GL_TEXTURE_2D : GL_TEXTURE_3D; newHelper.mTextureType = newHelper.mTexture2D ? GL_TEXTURE_2D : GL_TEXTURE_3D;
...@@ -1555,9 +1559,11 @@ TextureHelper11 TextureHelper11::MakeAndReference(ID3D11Resource *genericResourc ...@@ -1555,9 +1559,11 @@ TextureHelper11 TextureHelper11::MakeAndReference(ID3D11Resource *genericResourc
} }
// static // static
TextureHelper11 TextureHelper11::MakeAndPossess2D(ID3D11Texture2D *texToOwn) TextureHelper11 TextureHelper11::MakeAndPossess2D(ID3D11Texture2D *texToOwn,
d3d11::ANGLEFormat angleFormat)
{ {
TextureHelper11 newHelper; TextureHelper11 newHelper;
newHelper.mANGLEFormat = angleFormat;
newHelper.mTexture2D = texToOwn; newHelper.mTexture2D = texToOwn;
newHelper.mTextureType = GL_TEXTURE_2D; newHelper.mTextureType = GL_TEXTURE_2D;
newHelper.initDesc(); newHelper.initDesc();
...@@ -1565,9 +1571,11 @@ TextureHelper11 TextureHelper11::MakeAndPossess2D(ID3D11Texture2D *texToOwn) ...@@ -1565,9 +1571,11 @@ TextureHelper11 TextureHelper11::MakeAndPossess2D(ID3D11Texture2D *texToOwn)
} }
// static // static
TextureHelper11 TextureHelper11::MakeAndPossess3D(ID3D11Texture3D *texToOwn) TextureHelper11 TextureHelper11::MakeAndPossess3D(ID3D11Texture3D *texToOwn,
d3d11::ANGLEFormat angleFormat)
{ {
TextureHelper11 newHelper; TextureHelper11 newHelper;
newHelper.mANGLEFormat = angleFormat;
newHelper.mTexture3D = texToOwn; newHelper.mTexture3D = texToOwn;
newHelper.mTextureType = GL_TEXTURE_3D; newHelper.mTextureType = GL_TEXTURE_3D;
newHelper.initDesc(); newHelper.initDesc();
...@@ -1600,6 +1608,7 @@ void TextureHelper11::initDesc() ...@@ -1600,6 +1608,7 @@ void TextureHelper11::initDesc()
mFormat = desc3D.Format; mFormat = desc3D.Format;
mSampleCount = 1; mSampleCount = 1;
} }
ASSERT(mFormat == d3d11::GetANGLEFormatSet(mANGLEFormat).texFormat);
} }
TextureHelper11::~TextureHelper11() TextureHelper11::~TextureHelper11()
...@@ -1622,6 +1631,7 @@ TextureHelper11 &TextureHelper11::operator=(TextureHelper11 &&texture) ...@@ -1622,6 +1631,7 @@ TextureHelper11 &TextureHelper11::operator=(TextureHelper11 &&texture)
mTextureType = texture.mTextureType; mTextureType = texture.mTextureType;
mExtents = texture.mExtents; mExtents = texture.mExtents;
mFormat = texture.mFormat; mFormat = texture.mFormat;
mANGLEFormat = texture.mANGLEFormat;
mSampleCount = texture.mSampleCount; mSampleCount = texture.mSampleCount;
mTexture2D = texture.mTexture2D; mTexture2D = texture.mTexture2D;
mTexture3D = texture.mTexture3D; mTexture3D = texture.mTexture3D;
...@@ -1641,6 +1651,7 @@ void TextureHelper11::reset() ...@@ -1641,6 +1651,7 @@ void TextureHelper11::reset()
gl::ErrorOrResult<TextureHelper11> CreateStagingTexture(GLenum textureType, gl::ErrorOrResult<TextureHelper11> CreateStagingTexture(GLenum textureType,
DXGI_FORMAT dxgiFormat, DXGI_FORMAT dxgiFormat,
d3d11::ANGLEFormat angleFormat,
const gl::Extents &size, const gl::Extents &size,
ID3D11Device *device) ID3D11Device *device)
{ {
...@@ -1667,7 +1678,7 @@ gl::ErrorOrResult<TextureHelper11> CreateStagingTexture(GLenum textureType, ...@@ -1667,7 +1678,7 @@ gl::ErrorOrResult<TextureHelper11> CreateStagingTexture(GLenum textureType,
result); result);
} }
return TextureHelper11::MakeAndPossess2D(stagingTex); return TextureHelper11::MakeAndPossess2D(stagingTex, angleFormat);
} }
ASSERT(textureType == GL_TEXTURE_3D); ASSERT(textureType == GL_TEXTURE_3D);
...@@ -1690,7 +1701,7 @@ gl::ErrorOrResult<TextureHelper11> CreateStagingTexture(GLenum textureType, ...@@ -1690,7 +1701,7 @@ gl::ErrorOrResult<TextureHelper11> CreateStagingTexture(GLenum textureType,
result); result);
} }
return TextureHelper11::MakeAndPossess3D(stagingTex); return TextureHelper11::MakeAndPossess3D(stagingTex, angleFormat);
} }
bool UsePresentPathFast(const Renderer11 *renderer, bool UsePresentPathFast(const Renderer11 *renderer,
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "libANGLE/angletypes.h" #include "libANGLE/angletypes.h"
#include "libANGLE/Caps.h" #include "libANGLE/Caps.h"
#include "libANGLE/Error.h" #include "libANGLE/Error.h"
#include "libANGLE/renderer/d3d/d3d11/texture_format_table.h"
#include "libANGLE/renderer/d3d/RendererD3D.h" #include "libANGLE/renderer/d3d/RendererD3D.h"
namespace gl namespace gl
...@@ -366,13 +367,17 @@ class TextureHelper11 : angle::NonCopyable ...@@ -366,13 +367,17 @@ class TextureHelper11 : angle::NonCopyable
~TextureHelper11(); ~TextureHelper11();
TextureHelper11 &operator=(TextureHelper11 &&texture); TextureHelper11 &operator=(TextureHelper11 &&texture);
static TextureHelper11 MakeAndReference(ID3D11Resource *genericResource); static TextureHelper11 MakeAndReference(ID3D11Resource *genericResource,
static TextureHelper11 MakeAndPossess2D(ID3D11Texture2D *texToOwn); d3d11::ANGLEFormat angleFormat);
static TextureHelper11 MakeAndPossess3D(ID3D11Texture3D *texToOwn); static TextureHelper11 MakeAndPossess2D(ID3D11Texture2D *texToOwn,
d3d11::ANGLEFormat angleFormat);
static TextureHelper11 MakeAndPossess3D(ID3D11Texture3D *texToOwn,
d3d11::ANGLEFormat angleFormat);
GLenum getTextureType() const { return mTextureType; } GLenum getTextureType() const { return mTextureType; }
gl::Extents getExtents() const { return mExtents; } gl::Extents getExtents() const { return mExtents; }
DXGI_FORMAT getFormat() const { return mFormat; } DXGI_FORMAT getFormat() const { return mFormat; }
d3d11::ANGLEFormat getANGLEFormat() const { return mANGLEFormat; }
int getSampleCount() const { return mSampleCount; } int getSampleCount() const { return mSampleCount; }
ID3D11Texture2D *getTexture2D() const { return mTexture2D; } ID3D11Texture2D *getTexture2D() const { return mTexture2D; }
ID3D11Texture3D *getTexture3D() const { return mTexture3D; } ID3D11Texture3D *getTexture3D() const { return mTexture3D; }
...@@ -385,6 +390,7 @@ class TextureHelper11 : angle::NonCopyable ...@@ -385,6 +390,7 @@ class TextureHelper11 : angle::NonCopyable
GLenum mTextureType; GLenum mTextureType;
gl::Extents mExtents; gl::Extents mExtents;
DXGI_FORMAT mFormat; DXGI_FORMAT mFormat;
d3d11::ANGLEFormat mANGLEFormat;
int mSampleCount; int mSampleCount;
ID3D11Texture2D *mTexture2D; ID3D11Texture2D *mTexture2D;
ID3D11Texture3D *mTexture3D; ID3D11Texture3D *mTexture3D;
...@@ -392,6 +398,7 @@ class TextureHelper11 : angle::NonCopyable ...@@ -392,6 +398,7 @@ class TextureHelper11 : angle::NonCopyable
gl::ErrorOrResult<TextureHelper11> CreateStagingTexture(GLenum textureType, gl::ErrorOrResult<TextureHelper11> CreateStagingTexture(GLenum textureType,
DXGI_FORMAT dxgiFormat, DXGI_FORMAT dxgiFormat,
d3d11::ANGLEFormat angleFormat,
const gl::Extents &size, const gl::Extents &size,
ID3D11Device *device); ID3D11Device *device);
......
...@@ -12,14 +12,16 @@ ...@@ -12,14 +12,16 @@
#include <map> #include <map>
#include "common/angleutils.h"
#include "common/platform.h" #include "common/platform.h"
#include "libANGLE/renderer/d3d/formatutilsD3D.h" #include "libANGLE/renderer/d3d/formatutilsD3D.h"
#include "libANGLE/renderer/d3d/d3d11/Renderer11.h"
#include "libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.h" #include "libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.h"
namespace rx namespace rx
{ {
struct Renderer11DeviceCaps;
namespace d3d11 namespace d3d11
{ {
...@@ -45,7 +47,8 @@ struct ANGLEFormatSet ...@@ -45,7 +47,8 @@ struct ANGLEFormatSet
DXGI_FORMAT rtvFormat, DXGI_FORMAT rtvFormat,
DXGI_FORMAT dsvFormat, DXGI_FORMAT dsvFormat,
ANGLEFormat swizzleFormat, ANGLEFormat swizzleFormat,
MipGenerationFunction mipGenerationFunction); MipGenerationFunction mipGenerationFunction,
ColorReadFunction colorReadFunction);
ANGLEFormatSet(const ANGLEFormatSet &) = default; ANGLEFormatSet(const ANGLEFormatSet &) = default;
ANGLEFormatSet &operator=(const ANGLEFormatSet &) = default; ANGLEFormatSet &operator=(const ANGLEFormatSet &) = default;
...@@ -63,6 +66,7 @@ struct ANGLEFormatSet ...@@ -63,6 +66,7 @@ struct ANGLEFormatSet
ANGLEFormat swizzleFormat; ANGLEFormat swizzleFormat;
MipGenerationFunction mipGenerationFunction; MipGenerationFunction mipGenerationFunction;
ColorReadFunction colorReadFunction;
}; };
struct TextureFormat : public angle::NonCopyable struct TextureFormat : public angle::NonCopyable
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "libANGLE/renderer/d3d/d3d11/formatutils11.h" #include "libANGLE/renderer/d3d/d3d11/formatutils11.h"
#include "libANGLE/renderer/d3d/d3d11/load_functions_table.h" #include "libANGLE/renderer/d3d/d3d11/load_functions_table.h"
#include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h" #include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
#include "libANGLE/renderer/d3d/copyimage.h"
#include "libANGLE/renderer/d3d/generatemip.h" #include "libANGLE/renderer/d3d/generatemip.h"
#include "libANGLE/renderer/d3d/loadimage.h" #include "libANGLE/renderer/d3d/loadimage.h"
...@@ -106,7 +107,8 @@ ANGLEFormatSet::ANGLEFormatSet() ...@@ -106,7 +107,8 @@ ANGLEFormatSet::ANGLEFormatSet()
rtvFormat(DXGI_FORMAT_UNKNOWN), rtvFormat(DXGI_FORMAT_UNKNOWN),
dsvFormat(DXGI_FORMAT_UNKNOWN), dsvFormat(DXGI_FORMAT_UNKNOWN),
swizzleFormat(ANGLE_FORMAT_NONE), swizzleFormat(ANGLE_FORMAT_NONE),
mipGenerationFunction(nullptr) mipGenerationFunction(nullptr),
colorReadFunction(nullptr)
{ {
} }
...@@ -135,7 +137,8 @@ ANGLEFormatSet::ANGLEFormatSet(ANGLEFormat format, ...@@ -135,7 +137,8 @@ ANGLEFormatSet::ANGLEFormatSet(ANGLEFormat format,
DXGI_FORMAT rtvFormat, DXGI_FORMAT rtvFormat,
DXGI_FORMAT dsvFormat, DXGI_FORMAT dsvFormat,
ANGLEFormat swizzleFormat, ANGLEFormat swizzleFormat,
MipGenerationFunction mipGenerationFunction) MipGenerationFunction mipGenerationFunction,
ColorReadFunction colorReadFunction)
: format(format), : format(format),
glInternalFormat(glInternalFormat), glInternalFormat(glInternalFormat),
texFormat(texFormat), texFormat(texFormat),
...@@ -143,7 +146,8 @@ ANGLEFormatSet::ANGLEFormatSet(ANGLEFormat format, ...@@ -143,7 +146,8 @@ ANGLEFormatSet::ANGLEFormatSet(ANGLEFormat format,
rtvFormat(rtvFormat), rtvFormat(rtvFormat),
dsvFormat(dsvFormat), dsvFormat(dsvFormat),
swizzleFormat(swizzleFormat), swizzleFormat(swizzleFormat),
mipGenerationFunction(mipGenerationFunction) mipGenerationFunction(mipGenerationFunction),
colorReadFunction(colorReadFunction)
{ {
} }
...@@ -161,7 +165,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -161,7 +165,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
GenerateMip<A8>); GenerateMip<A8>,
ReadColor<A8, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_B4G4R4A4_UNORM: case ANGLE_FORMAT_B4G4R4A4_UNORM:
...@@ -173,7 +178,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -173,7 +178,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_B4G4R4A4_UNORM, DXGI_FORMAT_B4G4R4A4_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_B4G4R4A4_UNORM, ANGLE_FORMAT_B4G4R4A4_UNORM,
GenerateMip<A4R4G4B4>); GenerateMip<A4R4G4B4>,
ReadColor<A4R4G4B4, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_B5G5R5A1_UNORM: case ANGLE_FORMAT_B5G5R5A1_UNORM:
...@@ -185,7 +191,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -185,7 +191,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
GenerateMip<A1R5G5B5>); GenerateMip<A1R5G5B5>,
ReadColor<A1R5G5B5, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_B5G6R5_UNORM: case ANGLE_FORMAT_B5G6R5_UNORM:
...@@ -197,7 +204,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -197,7 +204,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G6R5_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
GenerateMip<R5G6B5>); GenerateMip<R5G6B5>,
ReadColor<R5G6B5, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_B8G8R8A8_UNORM: case ANGLE_FORMAT_B8G8R8A8_UNORM:
...@@ -209,7 +217,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -209,7 +217,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_B8G8R8A8_UNORM, ANGLE_FORMAT_B8G8R8A8_UNORM,
GenerateMip<B8G8R8A8>); GenerateMip<B8G8R8A8>,
ReadColor<B8G8R8A8, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_BC1_UNORM: case ANGLE_FORMAT_BC1_UNORM:
...@@ -221,6 +230,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -221,6 +230,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
...@@ -233,6 +243,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -233,6 +243,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
...@@ -245,6 +256,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -245,6 +256,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
...@@ -257,6 +269,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -257,6 +269,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D16_UNORM, DXGI_FORMAT_D16_UNORM,
ANGLE_FORMAT_R16G16B16A16_UNORM, ANGLE_FORMAT_R16G16B16A16_UNORM,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
...@@ -269,6 +282,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -269,6 +282,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D16_UNORM, DXGI_FORMAT_D16_UNORM,
ANGLE_FORMAT_R16G16B16A16_UNORM, ANGLE_FORMAT_R16G16B16A16_UNORM,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
...@@ -281,6 +295,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -281,6 +295,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_D24_UNORM_S8_UINT,
ANGLE_FORMAT_R32G32B32A32_FLOAT, ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
...@@ -293,6 +308,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -293,6 +308,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_D24_UNORM_S8_UINT,
ANGLE_FORMAT_R32G32B32A32_FLOAT, ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
...@@ -305,6 +321,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -305,6 +321,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D32_FLOAT, DXGI_FORMAT_D32_FLOAT,
ANGLE_FORMAT_R32G32B32A32_FLOAT, ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
...@@ -317,6 +334,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -317,6 +334,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D32_FLOAT_S8X24_UINT, DXGI_FORMAT_D32_FLOAT_S8X24_UINT,
ANGLE_FORMAT_R32G32B32A32_FLOAT, ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
...@@ -329,6 +347,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -329,6 +347,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_NONE, ANGLE_FORMAT_NONE,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
...@@ -341,7 +360,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -341,7 +360,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R10G10B10A2_UINT, DXGI_FORMAT_R10G10B10A2_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_UINT, ANGLE_FORMAT_R16G16B16A16_UINT,
GenerateMip<R10G10B10A2>); GenerateMip<R10G10B10A2>,
ReadColor<R10G10B10A2, GLuint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R10G10B10A2_UNORM: case ANGLE_FORMAT_R10G10B10A2_UNORM:
...@@ -353,7 +373,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -353,7 +373,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_UNORM, ANGLE_FORMAT_R16G16B16A16_UNORM,
GenerateMip<R10G10B10A2>); GenerateMip<R10G10B10A2>,
ReadColor<R10G10B10A2, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R11G11B10_FLOAT: case ANGLE_FORMAT_R11G11B10_FLOAT:
...@@ -365,7 +386,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -365,7 +386,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R11G11B10_FLOAT, DXGI_FORMAT_R11G11B10_FLOAT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_FLOAT, ANGLE_FORMAT_R16G16B16A16_FLOAT,
GenerateMip<R11G11B10F>); GenerateMip<R11G11B10F>,
ReadColor<R11G11B10F, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R16G16B16A16_FLOAT: case ANGLE_FORMAT_R16G16B16A16_FLOAT:
...@@ -377,7 +399,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -377,7 +399,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_FLOAT, ANGLE_FORMAT_R16G16B16A16_FLOAT,
GenerateMip<R16G16B16A16F>); GenerateMip<R16G16B16A16F>,
ReadColor<R16G16B16A16F, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R16G16B16A16_SINT: case ANGLE_FORMAT_R16G16B16A16_SINT:
...@@ -389,7 +412,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -389,7 +412,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_SINT, ANGLE_FORMAT_R16G16B16A16_SINT,
GenerateMip<R16G16B16A16S>); GenerateMip<R16G16B16A16S>,
ReadColor<R16G16B16A16S, GLint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R16G16B16A16_UINT: case ANGLE_FORMAT_R16G16B16A16_UINT:
...@@ -401,7 +425,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -401,7 +425,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_UINT, ANGLE_FORMAT_R16G16B16A16_UINT,
GenerateMip<R16G16B16A16>); GenerateMip<R16G16B16A16>,
ReadColor<R16G16B16A16, GLuint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R16G16B16A16_UNORM: case ANGLE_FORMAT_R16G16B16A16_UNORM:
...@@ -413,7 +438,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -413,7 +438,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R16G16B16A16_UNORM, DXGI_FORMAT_R16G16B16A16_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_UNORM, ANGLE_FORMAT_R16G16B16A16_UNORM,
GenerateMip<R16G16B16A16>); GenerateMip<R16G16B16A16>,
ReadColor<R16G16B16A16, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R16G16_FLOAT: case ANGLE_FORMAT_R16G16_FLOAT:
...@@ -425,7 +451,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -425,7 +451,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R16G16_FLOAT, DXGI_FORMAT_R16G16_FLOAT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_FLOAT, ANGLE_FORMAT_R16G16B16A16_FLOAT,
GenerateMip<R16G16F>); GenerateMip<R16G16F>,
ReadColor<R16G16F, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R16G16_SINT: case ANGLE_FORMAT_R16G16_SINT:
...@@ -437,7 +464,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -437,7 +464,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R16G16_SINT, DXGI_FORMAT_R16G16_SINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_SINT, ANGLE_FORMAT_R16G16B16A16_SINT,
GenerateMip<R16G16S>); GenerateMip<R16G16S>,
ReadColor<R16G16S, GLint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R16G16_UINT: case ANGLE_FORMAT_R16G16_UINT:
...@@ -449,7 +477,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -449,7 +477,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_UINT, ANGLE_FORMAT_R16G16B16A16_UINT,
GenerateMip<R16G16>); GenerateMip<R16G16>,
ReadColor<R16G16, GLuint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R16_FLOAT: case ANGLE_FORMAT_R16_FLOAT:
...@@ -461,7 +490,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -461,7 +490,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_R16_FLOAT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_FLOAT, ANGLE_FORMAT_R16G16B16A16_FLOAT,
GenerateMip<R16F>); GenerateMip<R16F>,
ReadColor<R16F, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R16_SINT: case ANGLE_FORMAT_R16_SINT:
...@@ -473,7 +503,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -473,7 +503,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R16_SINT, DXGI_FORMAT_R16_SINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_SINT, ANGLE_FORMAT_R16G16B16A16_SINT,
GenerateMip<R16S>); GenerateMip<R16S>,
ReadColor<R16S, GLint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R16_UINT: case ANGLE_FORMAT_R16_UINT:
...@@ -485,7 +516,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -485,7 +516,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_UINT, ANGLE_FORMAT_R16G16B16A16_UINT,
GenerateMip<R16>); GenerateMip<R16>,
ReadColor<R16, GLuint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R32G32B32A32_FLOAT: case ANGLE_FORMAT_R32G32B32A32_FLOAT:
...@@ -497,7 +529,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -497,7 +529,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_FLOAT, ANGLE_FORMAT_R32G32B32A32_FLOAT,
GenerateMip<R32G32B32A32F>); GenerateMip<R32G32B32A32F>,
ReadColor<R32G32B32A32F, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R32G32B32A32_SINT: case ANGLE_FORMAT_R32G32B32A32_SINT:
...@@ -509,7 +542,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -509,7 +542,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R32G32B32A32_SINT, DXGI_FORMAT_R32G32B32A32_SINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_SINT, ANGLE_FORMAT_R32G32B32A32_SINT,
GenerateMip<R32G32B32A32S>); GenerateMip<R32G32B32A32S>,
ReadColor<R32G32B32A32S, GLint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R32G32B32A32_UINT: case ANGLE_FORMAT_R32G32B32A32_UINT:
...@@ -521,7 +555,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -521,7 +555,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R32G32B32A32_UINT, DXGI_FORMAT_R32G32B32A32_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_UINT, ANGLE_FORMAT_R32G32B32A32_UINT,
GenerateMip<R32G32B32A32>); GenerateMip<R32G32B32A32>,
ReadColor<R32G32B32A32, GLuint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R32G32_FLOAT: case ANGLE_FORMAT_R32G32_FLOAT:
...@@ -533,7 +568,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -533,7 +568,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R32G32_FLOAT, DXGI_FORMAT_R32G32_FLOAT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_FLOAT, ANGLE_FORMAT_R32G32B32A32_FLOAT,
GenerateMip<R32G32F>); GenerateMip<R32G32F>,
ReadColor<R32G32F, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R32G32_SINT: case ANGLE_FORMAT_R32G32_SINT:
...@@ -545,7 +581,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -545,7 +581,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R32G32_SINT, DXGI_FORMAT_R32G32_SINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_SINT, ANGLE_FORMAT_R32G32B32A32_SINT,
GenerateMip<R32G32S>); GenerateMip<R32G32S>,
ReadColor<R32G32S, GLint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R32G32_UINT: case ANGLE_FORMAT_R32G32_UINT:
...@@ -557,7 +594,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -557,7 +594,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R32G32_UINT, DXGI_FORMAT_R32G32_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_UINT, ANGLE_FORMAT_R32G32B32A32_UINT,
GenerateMip<R32G32>); GenerateMip<R32G32>,
ReadColor<R32G32, GLuint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R32_FLOAT: case ANGLE_FORMAT_R32_FLOAT:
...@@ -569,7 +607,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -569,7 +607,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_R32_FLOAT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_FLOAT, ANGLE_FORMAT_R32G32B32A32_FLOAT,
GenerateMip<R32F>); GenerateMip<R32F>,
ReadColor<R32F, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R32_SINT: case ANGLE_FORMAT_R32_SINT:
...@@ -581,7 +620,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -581,7 +620,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R32_SINT, DXGI_FORMAT_R32_SINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_SINT, ANGLE_FORMAT_R32G32B32A32_SINT,
GenerateMip<R32S>); GenerateMip<R32S>,
ReadColor<R32S, GLint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R32_UINT: case ANGLE_FORMAT_R32_UINT:
...@@ -593,7 +633,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -593,7 +633,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R32_UINT, DXGI_FORMAT_R32_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_UINT, ANGLE_FORMAT_R32G32B32A32_UINT,
GenerateMip<R32>); GenerateMip<R32>,
ReadColor<R32, GLuint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8B8A8_SINT: case ANGLE_FORMAT_R8G8B8A8_SINT:
...@@ -605,7 +646,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -605,7 +646,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_SINT, ANGLE_FORMAT_R8G8B8A8_SINT,
GenerateMip<R8G8B8A8S>); GenerateMip<R8G8B8A8S>,
ReadColor<R8G8B8A8S, GLint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8B8A8_SNORM: case ANGLE_FORMAT_R8G8B8A8_SNORM:
...@@ -617,7 +659,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -617,7 +659,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_SNORM, ANGLE_FORMAT_R8G8B8A8_SNORM,
GenerateMip<R8G8B8A8S>); GenerateMip<R8G8B8A8S>,
ReadColor<R8G8B8A8S, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8B8A8_UINT: case ANGLE_FORMAT_R8G8B8A8_UINT:
...@@ -629,7 +672,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -629,7 +672,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UINT, ANGLE_FORMAT_R8G8B8A8_UINT,
GenerateMip<R8G8B8A8>); GenerateMip<R8G8B8A8>,
ReadColor<R8G8B8A8, GLuint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8B8A8_UNORM: case ANGLE_FORMAT_R8G8B8A8_UNORM:
...@@ -641,7 +685,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -641,7 +685,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
GenerateMip<R8G8B8A8>); GenerateMip<R8G8B8A8>,
ReadColor<R8G8B8A8, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8B8A8_UNORM_NONRENDERABLE: case ANGLE_FORMAT_R8G8B8A8_UNORM_NONRENDERABLE:
...@@ -653,7 +698,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -653,7 +698,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
GenerateMip<R8G8B8A8>); GenerateMip<R8G8B8A8>,
ReadColor<R8G8B8A8, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB: case ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB:
...@@ -665,7 +711,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -665,7 +711,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB, ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB,
GenerateMip<R8G8B8A8>); GenerateMip<R8G8B8A8>,
ReadColor<R8G8B8A8, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB_NONRENDERABLE: case ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB_NONRENDERABLE:
...@@ -677,7 +724,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -677,7 +724,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
GenerateMip<R8G8B8A8>); GenerateMip<R8G8B8A8>,
ReadColor<R8G8B8A8, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8_SINT: case ANGLE_FORMAT_R8G8_SINT:
...@@ -689,7 +737,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -689,7 +737,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R8G8_SINT, DXGI_FORMAT_R8G8_SINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_SINT, ANGLE_FORMAT_R8G8B8A8_SINT,
GenerateMip<R8G8S>); GenerateMip<R8G8S>,
ReadColor<R8G8S, GLint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8_SNORM: case ANGLE_FORMAT_R8G8_SNORM:
...@@ -701,7 +750,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -701,7 +750,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_SNORM, ANGLE_FORMAT_R8G8B8A8_SNORM,
GenerateMip<R8G8S>); GenerateMip<R8G8S>,
ReadColor<R8G8S, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8_SNORM_NONRENDERABLE: case ANGLE_FORMAT_R8G8_SNORM_NONRENDERABLE:
...@@ -713,7 +763,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -713,7 +763,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_SNORM, ANGLE_FORMAT_R8G8B8A8_SNORM,
GenerateMip<R8G8S>); GenerateMip<R8G8S>,
ReadColor<R8G8S, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8_UINT: case ANGLE_FORMAT_R8G8_UINT:
...@@ -725,7 +776,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -725,7 +776,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R8G8_UINT, DXGI_FORMAT_R8G8_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UINT, ANGLE_FORMAT_R8G8B8A8_UINT,
GenerateMip<R8G8>); GenerateMip<R8G8>,
ReadColor<R8G8, GLuint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8_UNORM: case ANGLE_FORMAT_R8G8_UNORM:
...@@ -737,7 +789,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -737,7 +789,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8G8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
GenerateMip<R8G8>); GenerateMip<R8G8>,
ReadColor<R8G8, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8G8_UNORM_NONRENDERABLE: case ANGLE_FORMAT_R8G8_UNORM_NONRENDERABLE:
...@@ -749,7 +802,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -749,7 +802,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
GenerateMip<R8G8>); GenerateMip<R8G8>,
ReadColor<R8G8, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8_SINT: case ANGLE_FORMAT_R8_SINT:
...@@ -761,7 +815,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -761,7 +815,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R8_SINT, DXGI_FORMAT_R8_SINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_SINT, ANGLE_FORMAT_R8G8B8A8_SINT,
GenerateMip<R8S>); GenerateMip<R8S>,
ReadColor<R8S, GLint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8_SNORM: case ANGLE_FORMAT_R8_SNORM:
...@@ -773,7 +828,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -773,7 +828,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_SNORM, ANGLE_FORMAT_R8G8B8A8_SNORM,
GenerateMip<R8S>); GenerateMip<R8S>,
ReadColor<R8S, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8_SNORM_NONRENDERABLE: case ANGLE_FORMAT_R8_SNORM_NONRENDERABLE:
...@@ -785,7 +841,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -785,7 +841,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_SNORM, ANGLE_FORMAT_R8G8B8A8_SNORM,
GenerateMip<R8S>); GenerateMip<R8S>,
ReadColor<R8S, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8_UINT: case ANGLE_FORMAT_R8_UINT:
...@@ -797,7 +854,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -797,7 +854,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_UINT,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UINT, ANGLE_FORMAT_R8G8B8A8_UINT,
GenerateMip<R8>); GenerateMip<R8>,
ReadColor<R8, GLuint>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8_UNORM: case ANGLE_FORMAT_R8_UNORM:
...@@ -809,7 +867,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -809,7 +867,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
GenerateMip<R8>); GenerateMip<R8>,
ReadColor<R8, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R8_UNORM_NONRENDERABLE: case ANGLE_FORMAT_R8_UNORM_NONRENDERABLE:
...@@ -821,7 +880,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -821,7 +880,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R8G8B8A8_UNORM, ANGLE_FORMAT_R8G8B8A8_UNORM,
GenerateMip<R8>); GenerateMip<R8>,
ReadColor<R8, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_R9G9B9E5_SHAREDEXP: case ANGLE_FORMAT_R9G9B9E5_SHAREDEXP:
...@@ -833,7 +893,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -833,7 +893,8 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_FLOAT, ANGLE_FORMAT_R16G16B16A16_FLOAT,
GenerateMip<R9G9B9E5>); GenerateMip<R9G9B9E5>,
ReadColor<R9G9B9E5, GLfloat>);
return formatInfo; return formatInfo;
} }
case ANGLE_FORMAT_X24_TYPELESS_G8_UINT: case ANGLE_FORMAT_X24_TYPELESS_G8_UINT:
...@@ -845,6 +906,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat) ...@@ -845,6 +906,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_D24_UNORM_S8_UINT,
ANGLE_FORMAT_R32G32B32A32_FLOAT, ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr,
nullptr); nullptr);
return formatInfo; return formatInfo;
} }
......
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