Commit 41d9f7e9 by Nicolas Capens

Move common SRV management into TextureStorage11.

BUG=angle:596 Change-Id: I0de2e3826e18ee769c27577b40677f0ca4da083b Reviewed-on: https://chromium-review.googlesource.com/193234Reviewed-by: 's avatarShannon Woods <shannonwoods@chromium.org> Tested-by: 's avatarNicolas Capens <nicolascapens@chromium.org>
parent e83fb002
......@@ -100,10 +100,19 @@ TextureStorage11::TextureStorage11(Renderer *renderer, UINT bindFlags)
mTextureDepth(0)
{
mRenderer = Renderer11::makeRenderer11(renderer);
for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++)
{
mLevelSRVs[i] = NULL;
}
}
TextureStorage11::~TextureStorage11()
{
for (unsigned int level = 0; level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++)
{
SafeRelease(mLevelSRVs[level]);
}
}
TextureStorage11 *TextureStorage11::makeTextureStorage11(TextureStorage *storage)
......@@ -182,6 +191,50 @@ UINT TextureStorage11::getSubresourceIndex(int mipLevel, int layerTarget) const
return index;
}
ID3D11ShaderResourceView *TextureStorage11::getSRV(const gl::SamplerState &samplerState)
{
bool swizzleRequired = samplerState.swizzleRequired();
bool mipmapping = gl::IsMipmapFiltered(samplerState);
int mipLevels = mipmapping ? (mMipLevels == 0 ? -1 : mMipLevels) : 1;
if (swizzleRequired)
{
verifySwizzleExists(samplerState.swizzleRed, samplerState.swizzleGreen, samplerState.swizzleBlue, samplerState.swizzleAlpha);
}
SRVKey key(0, mipLevels, swizzleRequired);
ID3D11ShaderResourceView *srv = srvCache.find(key);
if(srv)
{
return srv;
}
DXGI_FORMAT format = (swizzleRequired ? mSwizzleShaderResourceFormat : mShaderResourceFormat);
ID3D11Resource *texture = swizzleRequired ? getSwizzleTexture() : getResource();
srv = createSRV(0, mipLevels, format, texture);
return srvCache.add(key, srv);
}
ID3D11ShaderResourceView *TextureStorage11::getSRVLevel(int mipLevel)
{
if (mipLevel >= 0 && mipLevel < getLevelCount())
{
if (!mLevelSRVs[mipLevel])
{
mLevelSRVs[mipLevel] = createSRV(mipLevel, 1, mShaderResourceFormat, getResource());
}
return mLevelSRVs[mipLevel];
}
else
{
return NULL;
}
}
void TextureStorage11::generateSwizzles(GLenum swizzleRed, GLenum swizzleGreen, GLenum swizzleBlue, GLenum swizzleAlpha)
{
SwizzleCacheValue swizzleTarget(swizzleRed, swizzleGreen, swizzleBlue, swizzleAlpha);
......@@ -323,7 +376,6 @@ TextureStorage11_2D::TextureStorage11_2D(Renderer *renderer, SwapChain11 *swapch
for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++)
{
mLevelSRVs[i] = NULL;
mRenderTarget[i] = NULL;
mSwizzleRenderTargets[i] = NULL;
}
......@@ -362,7 +414,6 @@ TextureStorage11_2D::TextureStorage11_2D(Renderer *renderer, GLenum internalform
for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++)
{
mLevelSRVs[i] = NULL;
mRenderTarget[i] = NULL;
mSwizzleRenderTargets[i] = NULL;
}
......@@ -431,7 +482,6 @@ TextureStorage11_2D::~TextureStorage11_2D()
for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++)
{
SafeRelease(mLevelSRVs[i]);
SafeDelete(mRenderTarget[i]);
SafeRelease(mSwizzleRenderTargets[i]);
}
......@@ -522,50 +572,6 @@ RenderTarget *TextureStorage11_2D::getRenderTarget(int level)
}
}
ID3D11ShaderResourceView *TextureStorage11_2D::getSRV(const gl::SamplerState &samplerState)
{
bool swizzleRequired = samplerState.swizzleRequired();
bool mipmapping = gl::IsMipmapFiltered(samplerState);
int mipLevels = mipmapping ? (mMipLevels == 0 ? -1 : mMipLevels) : 1;
if (swizzleRequired)
{
verifySwizzleExists(samplerState.swizzleRed, samplerState.swizzleGreen, samplerState.swizzleBlue, samplerState.swizzleAlpha);
}
SRVKey key(0, mipLevels, swizzleRequired);
ID3D11ShaderResourceView *srv = srvCache.find(key);
if(srv)
{
return srv;
}
DXGI_FORMAT format = (swizzleRequired ? mSwizzleShaderResourceFormat : mShaderResourceFormat);
ID3D11Texture2D *texture = swizzleRequired ? getSwizzleTexture() : mTexture;
srv = createSRV(0, mipLevels, format, texture);
return srvCache.add(key, srv);
}
ID3D11ShaderResourceView *TextureStorage11_2D::getSRVLevel(int mipLevel)
{
if (mipLevel >= 0 && mipLevel < getLevelCount())
{
if (!mLevelSRVs[mipLevel])
{
mLevelSRVs[mipLevel] = createSRV(mipLevel, 1, mShaderResourceFormat, mTexture);
}
return mLevelSRVs[mipLevel];
}
else
{
return NULL;
}
}
ID3D11ShaderResourceView *TextureStorage11_2D::createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture)
{
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
......@@ -598,7 +604,7 @@ void TextureStorage11_2D::generateMipmap(int level)
generateMipmapLayer(source, dest);
}
ID3D11Texture2D *TextureStorage11_2D::getSwizzleTexture()
ID3D11Resource *TextureStorage11_2D::getSwizzleTexture()
{
if (!mSwizzleTexture)
{
......@@ -635,7 +641,7 @@ ID3D11RenderTargetView *TextureStorage11_2D::getSwizzleRenderTarget(int mipLevel
{
if (!mSwizzleRenderTargets[mipLevel])
{
ID3D11Texture2D* swizzleTexture = getSwizzleTexture();
ID3D11Resource *swizzleTexture = getSwizzleTexture();
if (!swizzleTexture)
{
return NULL;
......@@ -677,7 +683,6 @@ TextureStorage11_Cube::TextureStorage11_Cube(Renderer *renderer, GLenum internal
for (unsigned int level = 0; level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++)
{
mLevelSRVs[level] = NULL;
mSwizzleRenderTargets[level] = NULL;
for (unsigned int face = 0; face < 6; face++)
{
......@@ -744,7 +749,6 @@ TextureStorage11_Cube::~TextureStorage11_Cube()
for (unsigned int level = 0; level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++)
{
SafeRelease(mLevelSRVs[level]);
SafeRelease(mSwizzleRenderTargets[level]);
for (unsigned int face = 0; face < 6; face++)
{
......@@ -856,50 +860,6 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
}
}
ID3D11ShaderResourceView *TextureStorage11_Cube::getSRV(const gl::SamplerState &samplerState)
{
bool swizzleRequired = samplerState.swizzleRequired();
bool mipmapping = gl::IsMipmapFiltered(samplerState);
int mipLevels = mipmapping ? (mMipLevels == 0 ? -1 : mMipLevels) : 1;
if (swizzleRequired)
{
verifySwizzleExists(samplerState.swizzleRed, samplerState.swizzleGreen, samplerState.swizzleBlue, samplerState.swizzleAlpha);
}
SRVKey key(0, mipLevels, swizzleRequired);
ID3D11ShaderResourceView *srv = srvCache.find(key);
if(srv)
{
return srv;
}
DXGI_FORMAT format = (swizzleRequired ? mSwizzleShaderResourceFormat : mShaderResourceFormat);
ID3D11Texture2D *texture = swizzleRequired ? getSwizzleTexture() : mTexture;
srv = createSRV(0, mipLevels, format, texture);
return srvCache.add(key, srv);
}
ID3D11ShaderResourceView *TextureStorage11_Cube::getSRVLevel(int mipLevel)
{
if (mipLevel >= 0 && mipLevel < getLevelCount())
{
if (!mLevelSRVs[mipLevel])
{
mLevelSRVs[mipLevel] = createSRV(mipLevel, 1, mShaderResourceFormat, mTexture);
}
return mLevelSRVs[mipLevel];
}
else
{
return NULL;
}
}
ID3D11ShaderResourceView *TextureStorage11_Cube::createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture)
{
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
......@@ -948,7 +908,7 @@ void TextureStorage11_Cube::generateMipmap(int faceIndex, int level)
generateMipmapLayer(source, dest);
}
ID3D11Texture2D *TextureStorage11_Cube::getSwizzleTexture()
ID3D11Resource *TextureStorage11_Cube::getSwizzleTexture()
{
if (!mSwizzleTexture)
{
......@@ -985,7 +945,7 @@ ID3D11RenderTargetView *TextureStorage11_Cube::getSwizzleRenderTarget(int mipLev
{
if (!mSwizzleRenderTargets[mipLevel])
{
ID3D11Texture2D* swizzleTexture = getSwizzleTexture();
ID3D11Resource *swizzleTexture = getSwizzleTexture();
if (!swizzleTexture)
{
return NULL;
......@@ -1032,7 +992,6 @@ TextureStorage11_3D::TextureStorage11_3D(Renderer *renderer, GLenum internalform
for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++)
{
mLevelRenderTargets[i] = NULL;
mLevelSRVs[i] = NULL;
mSwizzleRenderTargets[i] = NULL;
}
......@@ -1105,7 +1064,6 @@ TextureStorage11_3D::~TextureStorage11_3D()
for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++)
{
SafeDelete(mLevelRenderTargets[i]);
SafeRelease(mLevelSRVs[i]);
SafeRelease(mSwizzleRenderTargets[i]);
}
}
......@@ -1121,50 +1079,6 @@ ID3D11Resource *TextureStorage11_3D::getResource() const
return mTexture;
}
ID3D11ShaderResourceView *TextureStorage11_3D::getSRV(const gl::SamplerState &samplerState)
{
bool swizzleRequired = samplerState.swizzleRequired();
bool mipmapping = gl::IsMipmapFiltered(samplerState);
int mipLevels = mipmapping ? (mMipLevels == 0 ? -1 : mMipLevels) : 1;
if (swizzleRequired)
{
verifySwizzleExists(samplerState.swizzleRed, samplerState.swizzleGreen, samplerState.swizzleBlue, samplerState.swizzleAlpha);
}
SRVKey key(0, mipLevels, swizzleRequired);
ID3D11ShaderResourceView *srv = srvCache.find(key);
if(srv)
{
return srv;
}
DXGI_FORMAT format = (swizzleRequired ? mSwizzleShaderResourceFormat : mShaderResourceFormat);
ID3D11Texture3D *texture = swizzleRequired ? getSwizzleTexture() : mTexture;
srv = createSRV(0, mipLevels, format, texture);
return srvCache.add(key, srv);
}
ID3D11ShaderResourceView *TextureStorage11_3D::getSRVLevel(int mipLevel)
{
if (mipLevel >= 0 && mipLevel < getLevelCount())
{
if (!mLevelSRVs[mipLevel])
{
mLevelSRVs[mipLevel] = createSRV(mipLevel, 1, mShaderResourceFormat, mTexture);
}
return mLevelSRVs[mipLevel];
}
else
{
return NULL;
}
}
ID3D11ShaderResourceView *TextureStorage11_3D::createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture)
{
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
......@@ -1301,7 +1215,7 @@ void TextureStorage11_3D::generateMipmap(int level)
generateMipmapLayer(source, dest);
}
ID3D11Texture3D *TextureStorage11_3D::getSwizzleTexture()
ID3D11Resource *TextureStorage11_3D::getSwizzleTexture()
{
if (!mSwizzleTexture)
{
......@@ -1336,7 +1250,7 @@ ID3D11RenderTargetView *TextureStorage11_3D::getSwizzleRenderTarget(int mipLevel
{
if (!mSwizzleRenderTargets[mipLevel])
{
ID3D11Texture3D* swizzleTexture = getSwizzleTexture();
ID3D11Resource *swizzleTexture = getSwizzleTexture();
if (!swizzleTexture)
{
return NULL;
......@@ -1383,7 +1297,6 @@ TextureStorage11_2DArray::TextureStorage11_2DArray(Renderer *renderer, GLenum in
for (unsigned int level = 0; level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++)
{
mLevelSRVs[level] = NULL;
mSwizzleRenderTargets[level] = NULL;
}
......@@ -1451,7 +1364,6 @@ TextureStorage11_2DArray::~TextureStorage11_2DArray()
for (unsigned int level = 0; level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++)
{
SafeRelease(mLevelSRVs[level]);
SafeRelease(mSwizzleRenderTargets[level]);
}
......@@ -1473,50 +1385,6 @@ ID3D11Resource *TextureStorage11_2DArray::getResource() const
return mTexture;
}
ID3D11ShaderResourceView *TextureStorage11_2DArray::getSRV(const gl::SamplerState &samplerState)
{
bool swizzleRequired = samplerState.swizzleRequired();
bool mipmapping = gl::IsMipmapFiltered(samplerState);
int mipLevels = mipmapping ? (mMipLevels == 0 ? -1 : mMipLevels) : 1;
if (swizzleRequired)
{
verifySwizzleExists(samplerState.swizzleRed, samplerState.swizzleGreen, samplerState.swizzleBlue, samplerState.swizzleAlpha);
}
SRVKey key(0, mipLevels, swizzleRequired);
ID3D11ShaderResourceView *srv = srvCache.find(key);
if(srv)
{
return srv;
}
DXGI_FORMAT format = (swizzleRequired ? mSwizzleShaderResourceFormat : mShaderResourceFormat);
ID3D11Texture2D *texture = swizzleRequired ? getSwizzleTexture() : mTexture;
srv = createSRV(0, mipLevels, format, texture);
return srvCache.add(key, srv);
}
ID3D11ShaderResourceView *TextureStorage11_2DArray::getSRVLevel(int mipLevel)
{
if (mipLevel >= 0 && mipLevel < getLevelCount())
{
if (!mLevelSRVs[mipLevel])
{
mLevelSRVs[mipLevel] = createSRV(mipLevel, 1, mShaderResourceFormat, mTexture);
}
return mLevelSRVs[mipLevel];
}
else
{
return NULL;
}
}
ID3D11ShaderResourceView *TextureStorage11_2DArray::createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture)
{
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
......@@ -1619,8 +1487,7 @@ void TextureStorage11_2DArray::generateMipmap(int level)
}
}
ID3D11Texture2D *TextureStorage11_2DArray::getSwizzleTexture()
ID3D11Resource *TextureStorage11_2DArray::getSwizzleTexture()
{
if (!mSwizzleTexture)
{
......@@ -1657,7 +1524,7 @@ ID3D11RenderTargetView *TextureStorage11_2DArray::getSwizzleRenderTarget(int mip
{
if (!mSwizzleRenderTargets[mipLevel])
{
ID3D11Texture2D* swizzleTexture = getSwizzleTexture();
ID3D11Resource *swizzleTexture = getSwizzleTexture();
if (!swizzleTexture)
{
return NULL;
......
......@@ -33,7 +33,7 @@ class TextureStorage11 : public TextureStorage
UINT getBindFlags() const;
virtual ID3D11Resource *getResource() const = 0;
virtual ID3D11ShaderResourceView *getSRV(const gl::SamplerState &samplerState) = 0;
virtual ID3D11ShaderResourceView *getSRV(const gl::SamplerState &samplerState);
virtual RenderTarget *getRenderTarget(int level) { return NULL; }
virtual RenderTarget *getRenderTargetFace(GLenum faceTarget, int level) { return NULL; }
virtual RenderTarget *getRenderTargetLayer(int mipLevel, int layer) { return NULL; }
......@@ -62,8 +62,11 @@ class TextureStorage11 : public TextureStorage
int getLevelHeight(int mipLevel) const;
int getLevelDepth(int mipLevel) const;
virtual ID3D11Resource *getSwizzleTexture() = 0;
virtual ID3D11RenderTargetView *getSwizzleRenderTarget(int mipLevel) = 0;
virtual ID3D11ShaderResourceView *getSRVLevel(int mipLevel) = 0;
ID3D11ShaderResourceView *getSRVLevel(int mipLevel);
virtual ID3D11ShaderResourceView *createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture) = 0;
void verifySwizzleExists(GLenum swizzleRed, GLenum swizzleGreen, GLenum swizzleBlue, GLenum swizzleAlpha);
......@@ -130,6 +133,9 @@ class TextureStorage11 : public TextureStorage
DISALLOW_COPY_AND_ASSIGN(TextureStorage11);
const UINT mBindFlags;
SRVCache srvCache;
ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
};
class TextureStorage11_2D : public TextureStorage11
......@@ -142,32 +148,26 @@ class TextureStorage11_2D : public TextureStorage11
static TextureStorage11_2D *makeTextureStorage11_2D(TextureStorage *storage);
virtual ID3D11Resource *getResource() const;
virtual ID3D11ShaderResourceView *getSRV(const gl::SamplerState &samplerState);
virtual RenderTarget *getRenderTarget(int level);
virtual void generateMipmap(int level);
protected:
ID3D11Texture2D *getSwizzleTexture();
virtual ID3D11Resource *getSwizzleTexture();
virtual ID3D11RenderTargetView *getSwizzleRenderTarget(int mipLevel);
virtual ID3D11ShaderResourceView *getSRVLevel(int mipLevel);
virtual unsigned int getTextureLevelDepth(int mipLevel) const;
private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage11_2D);
ID3D11ShaderResourceView *createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture);
virtual ID3D11ShaderResourceView *createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture);
ID3D11Texture2D *mTexture;
RenderTarget11 *mRenderTarget[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
ID3D11Texture2D *mSwizzleTexture;
ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
SRVCache srvCache;
ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
};
class TextureStorage11_Cube : public TextureStorage11
......@@ -179,32 +179,26 @@ class TextureStorage11_Cube : public TextureStorage11
static TextureStorage11_Cube *makeTextureStorage11_Cube(TextureStorage *storage);
virtual ID3D11Resource *getResource() const;
virtual ID3D11ShaderResourceView *getSRV(const gl::SamplerState &samplerState);
virtual RenderTarget *getRenderTargetFace(GLenum faceTarget, int level);
virtual void generateMipmap(int faceIndex, int level);
protected:
ID3D11Texture2D *getSwizzleTexture();
virtual ID3D11Resource *getSwizzleTexture();
virtual ID3D11RenderTargetView *getSwizzleRenderTarget(int mipLevel);
virtual ID3D11ShaderResourceView *getSRVLevel(int mipLevel);
virtual unsigned int getTextureLevelDepth(int mipLevel) const;
private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage11_Cube);
ID3D11ShaderResourceView *createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture);
virtual ID3D11ShaderResourceView *createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture);
ID3D11Texture2D *mTexture;
RenderTarget11 *mRenderTarget[6][gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
ID3D11Texture2D *mSwizzleTexture;
ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
SRVCache srvCache;
ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
};
class TextureStorage11_3D : public TextureStorage11
......@@ -217,24 +211,21 @@ class TextureStorage11_3D : public TextureStorage11
static TextureStorage11_3D *makeTextureStorage11_3D(TextureStorage *storage);
virtual ID3D11Resource *getResource() const;
virtual ID3D11ShaderResourceView *getSRV(const gl::SamplerState &samplerState);
virtual RenderTarget *getRenderTarget(int mipLevel);
virtual RenderTarget *getRenderTargetLayer(int mipLevel, int layer);
virtual void generateMipmap(int level);
protected:
ID3D11Texture3D *getSwizzleTexture();
virtual ID3D11Resource *getSwizzleTexture();
virtual ID3D11RenderTargetView *getSwizzleRenderTarget(int mipLevel);
virtual ID3D11ShaderResourceView *getSRVLevel(int mipLevel);
virtual unsigned int getTextureLevelDepth(int mipLevel) const;
private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage11_3D);
ID3D11ShaderResourceView *createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture);
virtual ID3D11ShaderResourceView *createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture);
typedef std::pair<int, int> LevelLayerKey;
typedef std::map<LevelLayerKey, RenderTarget11*> RenderTargetMap;
......@@ -245,9 +236,6 @@ class TextureStorage11_3D : public TextureStorage11
ID3D11Texture3D *mTexture;
ID3D11Texture3D *mSwizzleTexture;
ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
SRVCache srvCache;
ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
};
class TextureStorage11_2DArray : public TextureStorage11
......@@ -260,23 +248,20 @@ class TextureStorage11_2DArray : public TextureStorage11
static TextureStorage11_2DArray *makeTextureStorage11_2DArray(TextureStorage *storage);
virtual ID3D11Resource *getResource() const;
virtual ID3D11ShaderResourceView *getSRV(const gl::SamplerState &samplerState);
virtual RenderTarget *getRenderTargetLayer(int mipLevel, int layer);
virtual void generateMipmap(int level);
protected:
ID3D11Texture2D *getSwizzleTexture();
virtual ID3D11Resource *getSwizzleTexture();
virtual ID3D11RenderTargetView *getSwizzleRenderTarget(int mipLevel);
virtual ID3D11ShaderResourceView *getSRVLevel(int mipLevel);
virtual unsigned int getTextureLevelDepth(int mipLevel) const;
private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage11_2DArray);
ID3D11ShaderResourceView *createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture);
virtual ID3D11ShaderResourceView *createSRV(int baseLevel, int mipLevels, DXGI_FORMAT format, ID3D11Resource *texture);
typedef std::pair<int, int> LevelLayerKey;
typedef std::map<LevelLayerKey, RenderTarget11*> RenderTargetMap;
......@@ -286,9 +271,6 @@ class TextureStorage11_2DArray : public TextureStorage11
ID3D11Texture2D *mSwizzleTexture;
ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
SRVCache srvCache;
ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
};
}
......
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