Commit 517ccdf8 by Jamie Madill

Rename DeferredShader to LazyShader.

Deferred rendering is a shading technique, and "lazy" is the more correct term. Also rename a few methods so we can use a shared interface for other types of lazy D3D11 resources. BUG=angleproject:1014 Change-Id: I2fd2c823291d414003690066eaec063f1cd0bc4c Reviewed-on: https://chromium-review.googlesource.com/282550Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarZhenyao Mo <zmo@chromium.org> Reviewed-by: 's avatarBrandon Jones <bajones@google.com>
parent a55e4b7a
......@@ -335,12 +335,12 @@ Blit11::~Blit11()
SafeRelease(mDepthStencilState);
SafeRelease(mQuad2DIL);
mQuad2DVS.releaseShader();
mDepthPS.releaseShader();
mQuad2DVS.release();
mDepthPS.release();
SafeRelease(mQuad3DIL);
mQuad3DVS.releaseShader();
mQuad3DGS.releaseShader();
mQuad3DVS.release();
mQuad3DGS.release();
SafeRelease(mSwizzleCB);
......@@ -784,7 +784,7 @@ gl::Error Blit11::copyDepth(ID3D11ShaderResourceView *source, const gl::Box &sou
}
ID3D11Device *device = mRenderer->getDevice();
ID3D11VertexShader *quad2DVS = mQuad2DVS.getShader(device);
ID3D11VertexShader *quad2DVS = mQuad2DVS.resolve(device);
if (quad2DVS == nullptr)
{
return gl::Error(GL_INVALID_OPERATION, "Error compiling internal 2D blit vertex shader");
......@@ -795,7 +795,7 @@ gl::Error Blit11::copyDepth(ID3D11ShaderResourceView *source, const gl::Box &sou
deviceContext->IASetPrimitiveTopology(topology);
deviceContext->VSSetShader(quad2DVS, nullptr, 0);
deviceContext->PSSetShader(mDepthPS.getShader(device), nullptr, 0);
deviceContext->PSSetShader(mDepthPS.resolve(device), nullptr, 0);
deviceContext->GSSetShader(nullptr, nullptr, 0);
// Unset the currently bound shader resource to avoid conflicts
......@@ -1260,7 +1260,7 @@ gl::Error Blit11::getCommonShaders(CommonShaders *commonShadersOut, bool get3D)
{
ID3D11Device *device = mRenderer->getDevice();
commonShadersOut->vertexShader2D = mQuad2DVS.getShader(device);
commonShadersOut->vertexShader2D = mQuad2DVS.resolve(device);
if (commonShadersOut->vertexShader2D == nullptr)
{
return gl::Error(GL_INVALID_OPERATION, "Error compiling internal blit 2d vertex shader");
......@@ -1268,8 +1268,8 @@ gl::Error Blit11::getCommonShaders(CommonShaders *commonShadersOut, bool get3D)
if (get3D)
{
commonShadersOut->vertexShader3D = mQuad3DVS.getShader(device);
commonShadersOut->geometryShader3D = mQuad3DGS.getShader(device);
commonShadersOut->vertexShader3D = mQuad3DVS.resolve(device);
commonShadersOut->geometryShader3D = mQuad3DGS.resolve(device);
if (commonShadersOut->vertexShader3D == nullptr || commonShadersOut->geometryShader3D == nullptr)
{
......
......@@ -157,12 +157,12 @@ class Blit11 : angle::NonCopyable
ID3D11DepthStencilState *mDepthStencilState;
ID3D11InputLayout *mQuad2DIL;
d3d11::DeferredShader<ID3D11VertexShader> mQuad2DVS;
d3d11::DeferredShader<ID3D11PixelShader> mDepthPS;
d3d11::LazyShader<ID3D11VertexShader> mQuad2DVS;
d3d11::LazyShader<ID3D11PixelShader> mDepthPS;
ID3D11InputLayout *mQuad3DIL;
d3d11::DeferredShader<ID3D11VertexShader> mQuad3DVS;
d3d11::DeferredShader<ID3D11GeometryShader> mQuad3DGS;
d3d11::LazyShader<ID3D11VertexShader> mQuad3DVS;
d3d11::LazyShader<ID3D11GeometryShader> mQuad3DGS;
ID3D11Buffer *mSwizzleCB;
};
......
......@@ -193,13 +193,13 @@ ID3D11PixelShader *CompilePS(ID3D11Device *device, const BYTE (&byteCode)[N], co
}
template <typename D3D11ShaderType>
class DeferredShader final : public angle::NonCopyable
class LazyShader final : public angle::NonCopyable
{
public:
// All parameters must be constexpr. Not supported in VS2013.
DeferredShader(const BYTE *byteCode,
size_t byteCodeSize,
const char *name)
LazyShader(const BYTE *byteCode,
size_t byteCodeSize,
const char *name)
: mByteCode(byteCode),
mByteCodeSize(byteCodeSize),
mName(name),
......@@ -208,10 +208,10 @@ class DeferredShader final : public angle::NonCopyable
{
}
~DeferredShader() { releaseShader(); }
void releaseShader() { SafeRelease(mShader); }
~LazyShader() { release(); }
D3D11ShaderType *getShader(ID3D11Device *device);
D3D11ShaderType *resolve(ID3D11Device *device);
void release() { SafeRelease(mShader); }
private:
void checkAssociatedDevice(ID3D11Device *device);
......@@ -224,14 +224,14 @@ class DeferredShader final : public angle::NonCopyable
};
template <typename D3D11ShaderType>
void DeferredShader<D3D11ShaderType>::checkAssociatedDevice(ID3D11Device *device)
void LazyShader<D3D11ShaderType>::checkAssociatedDevice(ID3D11Device *device)
{
ASSERT(mAssociatedDevice == nullptr || device == mAssociatedDevice);
mAssociatedDevice = device;
}
template <>
inline ID3D11VertexShader *DeferredShader<ID3D11VertexShader>::getShader(ID3D11Device *device)
inline ID3D11VertexShader *LazyShader<ID3D11VertexShader>::resolve(ID3D11Device *device)
{
checkAssociatedDevice(device);
if (mShader == nullptr)
......@@ -242,7 +242,7 @@ inline ID3D11VertexShader *DeferredShader<ID3D11VertexShader>::getShader(ID3D11D
}
template <>
inline ID3D11GeometryShader *DeferredShader<ID3D11GeometryShader>::getShader(ID3D11Device *device)
inline ID3D11GeometryShader *LazyShader<ID3D11GeometryShader>::resolve(ID3D11Device *device)
{
checkAssociatedDevice(device);
if (mShader == nullptr)
......@@ -253,7 +253,7 @@ inline ID3D11GeometryShader *DeferredShader<ID3D11GeometryShader>::getShader(ID3
}
template <>
inline ID3D11PixelShader *DeferredShader<ID3D11PixelShader>::getShader(ID3D11Device *device)
inline ID3D11PixelShader *LazyShader<ID3D11PixelShader>::resolve(ID3D11Device *device)
{
checkAssociatedDevice(device);
if (mShader == nullptr)
......
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