Commit a9f85c63 by Nicolas Capens

Cache previously created SRVs.

BUG=angle:596 Change-Id: I15ac729388177a2ac89df4caffad5e12c7317bd7 Reviewed-on: https://chromium-review.googlesource.com/193232Tested-by: 's avatarNicolas Capens <nicolascapens@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarShannon Woods <shannonwoods@chromium.org>
parent 1d31aca9
...@@ -99,6 +99,33 @@ class TextureStorage11 : public TextureStorage ...@@ -99,6 +99,33 @@ class TextureStorage11 : public TextureStorage
}; };
SwizzleCacheValue mSwizzleCache[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; SwizzleCacheValue mSwizzleCache[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
struct SRVKey
{
SRVKey(int baseLevel = 0, int mipLevels = 0, bool swizzle = false);
bool operator==(const SRVKey &rhs) const;
int baseLevel;
int mipLevels;
bool swizzle;
};
struct SRVPair
{
SRVKey key;
ID3D11ShaderResourceView *srv;
};
struct SRVCache
{
~SRVCache();
ID3D11ShaderResourceView *find(const SRVKey &key) const;
ID3D11ShaderResourceView *add(const SRVKey &key, ID3D11ShaderResourceView *srv);
std::vector<SRVPair> cache;
};
private: private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage11); DISALLOW_COPY_AND_ASSIGN(TextureStorage11);
...@@ -139,7 +166,7 @@ class TextureStorage11_2D : public TextureStorage11 ...@@ -139,7 +166,7 @@ class TextureStorage11_2D : public TextureStorage11
ID3D11Texture2D *mSwizzleTexture; ID3D11Texture2D *mSwizzleTexture;
ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
ID3D11ShaderResourceView *mSRV[2][2]; // [swizzle][mipmapping] SRVCache srvCache;
ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
}; };
...@@ -176,7 +203,7 @@ class TextureStorage11_Cube : public TextureStorage11 ...@@ -176,7 +203,7 @@ class TextureStorage11_Cube : public TextureStorage11
ID3D11Texture2D *mSwizzleTexture; ID3D11Texture2D *mSwizzleTexture;
ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
ID3D11ShaderResourceView *mSRV[2][2]; // [swizzle][mipmapping] SRVCache srvCache;
ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
}; };
...@@ -219,7 +246,7 @@ class TextureStorage11_3D : public TextureStorage11 ...@@ -219,7 +246,7 @@ class TextureStorage11_3D : public TextureStorage11
ID3D11Texture3D *mSwizzleTexture; ID3D11Texture3D *mSwizzleTexture;
ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
ID3D11ShaderResourceView *mSRV[2][2]; // [swizzle][mipmapping] SRVCache srvCache;
ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
}; };
...@@ -260,7 +287,7 @@ class TextureStorage11_2DArray : public TextureStorage11 ...@@ -260,7 +287,7 @@ class TextureStorage11_2DArray : public TextureStorage11
ID3D11Texture2D *mSwizzleTexture; ID3D11Texture2D *mSwizzleTexture;
ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; ID3D11RenderTargetView *mSwizzleRenderTargets[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS];
ID3D11ShaderResourceView *mSRV[2][2]; // [swizzle][mipmapping] SRVCache srvCache;
ID3D11ShaderResourceView *mLevelSRVs[gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS]; 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