Remove Renderer pointer from FBO attachments.
Removing the Renderer pointer is one step towards making FBO
attachments a minimal state object. Eventually we will be able
to store them as arrays instead of arrays of pointers.
BUG=angle:660
Change-Id: Idce34e06c339ecb18c60fef12d2ed911d0c4e0f6
Reviewed-on: https://chromium-review.googlesource.com/201835
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 93f3ae2..342ac28 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -1849,10 +1849,10 @@
{
switch (pname)
{
- case GL_RED_BITS: *params = colorbuffer->getRedSize(); break;
- case GL_GREEN_BITS: *params = colorbuffer->getGreenSize(); break;
- case GL_BLUE_BITS: *params = colorbuffer->getBlueSize(); break;
- case GL_ALPHA_BITS: *params = colorbuffer->getAlphaSize(); break;
+ case GL_RED_BITS: *params = colorbuffer->getRedSize(mClientVersion); break;
+ case GL_GREEN_BITS: *params = colorbuffer->getGreenSize(mClientVersion); break;
+ case GL_BLUE_BITS: *params = colorbuffer->getBlueSize(mClientVersion); break;
+ case GL_ALPHA_BITS: *params = colorbuffer->getAlphaSize(mClientVersion); break;
}
}
else
@@ -1868,7 +1868,7 @@
if (depthbuffer)
{
- *params = depthbuffer->getDepthSize();
+ *params = depthbuffer->getDepthSize(mClientVersion);
}
else
{
@@ -1883,7 +1883,7 @@
if (stencilbuffer)
{
- *params = stencilbuffer->getStencilSize();
+ *params = stencilbuffer->getStencilSize(mClientVersion);
}
else
{
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index 1fba656..806c9a0 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -132,7 +132,7 @@
FramebufferAttachmentImpl *attachmentImpl = createAttachmentImpl(type, colorbuffer, level, layer);
if (attachmentImpl)
{
- FramebufferAttachment *newAttachment = new FramebufferAttachment(mRenderer, colorbuffer, attachmentImpl);
+ FramebufferAttachment *newAttachment = new FramebufferAttachment(colorbuffer, attachmentImpl);
mColorbuffers[colorAttachment].set(newAttachment, type, level, layer);
}
else
@@ -146,7 +146,7 @@
FramebufferAttachmentImpl *attachmentImpl = createAttachmentImpl(type, depthbuffer, level, layer);
if (attachmentImpl)
{
- FramebufferAttachment *newAttachment = new FramebufferAttachment(mRenderer, depthbuffer, attachmentImpl);
+ FramebufferAttachment *newAttachment = new FramebufferAttachment(depthbuffer, attachmentImpl);
mDepthbuffer.set(newAttachment, type, level, layer);
}
else
@@ -160,7 +160,7 @@
FramebufferAttachmentImpl *attachmentImpl = createAttachmentImpl(type, stencilbuffer, level, layer);
if (attachmentImpl)
{
- FramebufferAttachment *newAttachment = new FramebufferAttachment(mRenderer, stencilbuffer, attachmentImpl);
+ FramebufferAttachment *newAttachment = new FramebufferAttachment(stencilbuffer, attachmentImpl);
mStencilbuffer.set(newAttachment, type, level, layer);
}
else
@@ -177,8 +177,9 @@
FramebufferAttachmentImpl *attachmentImpl = createAttachmentImpl(type, depthStencilBuffer, level, layer);
if (attachmentImpl)
{
- FramebufferAttachment *newAttachment = new FramebufferAttachment(mRenderer, depthStencilBuffer, attachmentImpl);
- if (newAttachment->getDepthSize() > 0 && newAttachment->getStencilSize() > 0)
+ FramebufferAttachment *newAttachment = new FramebufferAttachment(depthStencilBuffer, attachmentImpl);
+ int clientVersion = mRenderer->getCurrentClientVersion();
+ if (newAttachment->getDepthSize(clientVersion) > 0 && newAttachment->getStencilSize(clientVersion) > 0)
{
mDepthbuffer.set(newAttachment, type, level, layer);
mStencilbuffer.set(newAttachment, type, level, layer);
@@ -445,7 +446,8 @@
if (stencilbufferObject)
{
- return stencilbufferObject->getStencilSize() > 0;
+ int clientVersion = mRenderer->getCurrentClientVersion();
+ return stencilbufferObject->getStencilSize(clientVersion) > 0;
}
}
@@ -717,11 +719,11 @@
: Framebuffer(renderer)
{
Renderbuffer *colorRenderbuffer = new Renderbuffer(mRenderer, 0, colorbuffer);
- FramebufferAttachment *colorAttachment = new FramebufferAttachment(mRenderer, 0, new RenderbufferAttachment(colorRenderbuffer));
+ FramebufferAttachment *colorAttachment = new FramebufferAttachment(0, new RenderbufferAttachment(colorRenderbuffer));
mColorbuffers[0].set(colorAttachment, GL_RENDERBUFFER, 0, 0);
Renderbuffer *depthStencilRenderbuffer = new Renderbuffer(mRenderer, 0, depthStencil);
- FramebufferAttachment *depthStencilAttachment = new FramebufferAttachment(mRenderer, 0, new RenderbufferAttachment(depthStencilRenderbuffer));
+ FramebufferAttachment *depthStencilAttachment = new FramebufferAttachment(0, new RenderbufferAttachment(depthStencilRenderbuffer));
mDepthbuffer.set(depthStencilAttachment, (depthStencilRenderbuffer->getDepthSize() != 0) ? GL_RENDERBUFFER : GL_NONE, 0, 0);
mStencilbuffer.set(depthStencilAttachment, (depthStencilRenderbuffer->getStencilSize() != 0) ? GL_RENDERBUFFER : GL_NONE, 0, 0);
diff --git a/src/libGLESv2/FramebufferAttachment.cpp b/src/libGLESv2/FramebufferAttachment.cpp
index b9e4728..bdafc2f 100644
--- a/src/libGLESv2/FramebufferAttachment.cpp
+++ b/src/libGLESv2/FramebufferAttachment.cpp
@@ -355,12 +355,10 @@
////// FramebufferAttachment Implementation //////
-FramebufferAttachment::FramebufferAttachment(rx::Renderer *renderer, GLuint id, FramebufferAttachmentImpl *instance)
+FramebufferAttachment::FramebufferAttachment(GLuint id, FramebufferAttachmentImpl *instance)
: RefCountObject(id),
- mRenderer(renderer),
mImpl(instance)
{
- ASSERT(mRenderer != NULL);
ASSERT(mImpl != NULL);
}
@@ -420,11 +418,11 @@
return mImpl->getActualFormat();
}
-GLuint FramebufferAttachment::getRedSize() const
+GLuint FramebufferAttachment::getRedSize(int clientVersion) const
{
- if (gl::GetRedBits(getInternalFormat(), mRenderer->getCurrentClientVersion()) > 0)
+ if (gl::GetRedBits(getInternalFormat(), clientVersion) > 0)
{
- return gl::GetRedBits(getActualFormat(), mRenderer->getCurrentClientVersion());
+ return gl::GetRedBits(getActualFormat(), clientVersion);
}
else
{
@@ -432,11 +430,11 @@
}
}
-GLuint FramebufferAttachment::getGreenSize() const
+GLuint FramebufferAttachment::getGreenSize(int clientVersion) const
{
- if (gl::GetGreenBits(getInternalFormat(), mRenderer->getCurrentClientVersion()) > 0)
+ if (gl::GetGreenBits(getInternalFormat(), clientVersion) > 0)
{
- return gl::GetGreenBits(getActualFormat(), mRenderer->getCurrentClientVersion());
+ return gl::GetGreenBits(getActualFormat(), clientVersion);
}
else
{
@@ -444,11 +442,11 @@
}
}
-GLuint FramebufferAttachment::getBlueSize() const
+GLuint FramebufferAttachment::getBlueSize(int clientVersion) const
{
- if (gl::GetBlueBits(getInternalFormat(), mRenderer->getCurrentClientVersion()) > 0)
+ if (gl::GetBlueBits(getInternalFormat(), clientVersion) > 0)
{
- return gl::GetBlueBits(getActualFormat(), mRenderer->getCurrentClientVersion());
+ return gl::GetBlueBits(getActualFormat(), clientVersion);
}
else
{
@@ -456,11 +454,11 @@
}
}
-GLuint FramebufferAttachment::getAlphaSize() const
+GLuint FramebufferAttachment::getAlphaSize(int clientVersion) const
{
- if (gl::GetAlphaBits(getInternalFormat(), mRenderer->getCurrentClientVersion()) > 0)
+ if (gl::GetAlphaBits(getInternalFormat(), clientVersion) > 0)
{
- return gl::GetAlphaBits(getActualFormat(), mRenderer->getCurrentClientVersion());
+ return gl::GetAlphaBits(getActualFormat(), clientVersion);
}
else
{
@@ -468,11 +466,11 @@
}
}
-GLuint FramebufferAttachment::getDepthSize() const
+GLuint FramebufferAttachment::getDepthSize(int clientVersion) const
{
- if (gl::GetDepthBits(getInternalFormat(), mRenderer->getCurrentClientVersion()) > 0)
+ if (gl::GetDepthBits(getInternalFormat(), clientVersion) > 0)
{
- return gl::GetDepthBits(getActualFormat(), mRenderer->getCurrentClientVersion());
+ return gl::GetDepthBits(getActualFormat(), clientVersion);
}
else
{
@@ -480,11 +478,11 @@
}
}
-GLuint FramebufferAttachment::getStencilSize() const
+GLuint FramebufferAttachment::getStencilSize(int clientVersion) const
{
- if (gl::GetStencilBits(getInternalFormat(), mRenderer->getCurrentClientVersion()) > 0)
+ if (gl::GetStencilBits(getInternalFormat(), clientVersion) > 0)
{
- return gl::GetStencilBits(getActualFormat(), mRenderer->getCurrentClientVersion());
+ return gl::GetStencilBits(getActualFormat(), clientVersion);
}
else
{
@@ -492,14 +490,14 @@
}
}
-GLenum FramebufferAttachment::getComponentType() const
+GLenum FramebufferAttachment::getComponentType(int clientVersion) const
{
- return gl::GetComponentType(getActualFormat(), mRenderer->getCurrentClientVersion());
+ return gl::GetComponentType(getActualFormat(), clientVersion);
}
-GLenum FramebufferAttachment::getColorEncoding() const
+GLenum FramebufferAttachment::getColorEncoding(int clientVersion) const
{
- return gl::GetColorEncoding(getActualFormat(), mRenderer->getCurrentClientVersion());
+ return gl::GetColorEncoding(getActualFormat(), clientVersion);
}
GLsizei FramebufferAttachment::getSamples() const
diff --git a/src/libGLESv2/FramebufferAttachment.h b/src/libGLESv2/FramebufferAttachment.h
index 40553db..207b2fc 100644
--- a/src/libGLESv2/FramebufferAttachment.h
+++ b/src/libGLESv2/FramebufferAttachment.h
@@ -42,7 +42,7 @@
class FramebufferAttachment : public RefCountObject
{
public:
- FramebufferAttachment(rx::Renderer *renderer, GLuint id, FramebufferAttachmentImpl *storage);
+ FramebufferAttachment(GLuint id, FramebufferAttachmentImpl *storage);
virtual ~FramebufferAttachment();
@@ -61,14 +61,14 @@
GLsizei getHeight() const;
GLenum getInternalFormat() const;
GLenum getActualFormat() const;
- GLuint getRedSize() const;
- GLuint getGreenSize() const;
- GLuint getBlueSize() const;
- GLuint getAlphaSize() const;
- GLuint getDepthSize() const;
- GLuint getStencilSize() const;
- GLenum getComponentType() const;
- GLenum getColorEncoding() const;
+ GLuint getRedSize(int clientVersion) const;
+ GLuint getGreenSize(int clientVersion) const;
+ GLuint getBlueSize(int clientVersion) const;
+ GLuint getAlphaSize(int clientVersion) const;
+ GLuint getDepthSize(int clientVersion) const;
+ GLuint getStencilSize(int clientVersion) const;
+ GLenum getComponentType(int clientVersion) const;
+ GLenum getColorEncoding(int clientVersion) const;
GLsizei getSamples() const;
unsigned int getSerial() const;
@@ -81,7 +81,6 @@
private:
DISALLOW_COPY_AND_ASSIGN(FramebufferAttachment);
- rx::Renderer const *mRenderer;
FramebufferAttachmentImpl *mImpl;
};
diff --git a/src/libGLESv2/Texture.cpp b/src/libGLESv2/Texture.cpp
index 605823d..2a2f673 100644
--- a/src/libGLESv2/Texture.cpp
+++ b/src/libGLESv2/Texture.cpp
@@ -1032,7 +1032,7 @@
FramebufferAttachment *attachment = mRenderbufferProxies.get(level, 0);
if (!attachment)
{
- attachment = new FramebufferAttachment(mRenderer, id(), new Texture2DAttachment(this, level));
+ attachment = new FramebufferAttachment(id(), new Texture2DAttachment(this, level));
mRenderbufferProxies.add(level, 0, attachment);
}
@@ -1670,7 +1670,7 @@
FramebufferAttachment *attachment = mRenderbufferProxies.get(level, faceIndex);
if (!attachment)
{
- attachment = new FramebufferAttachment(mRenderer, id(), new TextureCubeMapAttachment(this, target, level));
+ attachment = new FramebufferAttachment(id(), new TextureCubeMapAttachment(this, target, level));
mRenderbufferProxies.add(level, faceIndex, attachment);
}
@@ -2047,7 +2047,7 @@
FramebufferAttachment *attachment = mRenderbufferProxies.get(level, layer);
if (!attachment)
{
- attachment = new FramebufferAttachment(mRenderer, id(), new Texture3DAttachment(this, level, layer));
+ attachment = new FramebufferAttachment(id(), new Texture3DAttachment(this, level, layer));
mRenderbufferProxies.add(level, 0, attachment);
}
@@ -2598,7 +2598,7 @@
FramebufferAttachment *attachment = mRenderbufferProxies.get(level, layer);
if (!attachment)
{
- attachment = new FramebufferAttachment(mRenderer, id(), new Texture2DArrayAttachment(this, level, layer));
+ attachment = new FramebufferAttachment(id(), new Texture2DArrayAttachment(this, level, layer));
mRenderbufferProxies.add(level, 0, attachment);
}
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 70179cc..d2d14c1 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -2537,6 +2537,8 @@
return gl::error(GL_INVALID_ENUM);
}
+ int clientVersion = context->getClientVersion();
+
switch (pname)
{
case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:
@@ -2553,7 +2555,7 @@
case GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:
case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:
- if (context->getClientVersion() >= 3)
+ if (clientVersion >= 3)
{
break;
}
@@ -2569,7 +2571,7 @@
case GL_DEPTH:
case GL_STENCIL:
case GL_DEPTH_STENCIL_ATTACHMENT:
- if (context->getClientVersion() < 3)
+ if (clientVersion < 3)
{
return gl::error(GL_INVALID_ENUM);
}
@@ -2600,7 +2602,7 @@
if (framebufferHandle == 0)
{
- if (context->getClientVersion() < 3)
+ if (clientVersion < 3)
{
return gl::error(GL_INVALID_OPERATION);
}
@@ -2713,7 +2715,7 @@
break;
case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:
- if (context->getClientVersion() < 3)
+ if (clientVersion < 3)
{
return gl::error(GL_INVALID_ENUM);
}
@@ -2721,7 +2723,7 @@
break;
default:
- if (context->getClientVersion() < 3)
+ if (clientVersion < 3)
{
return gl::error(GL_INVALID_ENUM);
}
@@ -2768,27 +2770,27 @@
break;
case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE:
- *params = attachmentObject->getRedSize();
+ *params = attachmentObject->getRedSize(clientVersion);
break;
case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:
- *params = attachmentObject->getGreenSize();
+ *params = attachmentObject->getGreenSize(clientVersion);
break;
case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:
- *params = attachmentObject->getBlueSize();
+ *params = attachmentObject->getBlueSize(clientVersion);
break;
case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:
- *params = attachmentObject->getAlphaSize();
+ *params = attachmentObject->getAlphaSize(clientVersion);
break;
case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:
- *params = attachmentObject->getDepthSize();
+ *params = attachmentObject->getDepthSize(clientVersion);
break;
case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:
- *params = attachmentObject->getStencilSize();
+ *params = attachmentObject->getStencilSize(clientVersion);
break;
case GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:
@@ -2796,11 +2798,11 @@
{
gl::error(GL_INVALID_OPERATION);
}
- *params = attachmentObject->getComponentType();
+ *params = attachmentObject->getComponentType(clientVersion);
break;
case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
- *params = attachmentObject->getColorEncoding();
+ *params = attachmentObject->getColorEncoding(clientVersion);
break;
case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:
diff --git a/src/libGLESv2/renderer/d3d11/RenderStateCache.cpp b/src/libGLESv2/renderer/d3d11/RenderStateCache.cpp
index b58569a..02fd962 100644
--- a/src/libGLESv2/renderer/d3d11/RenderStateCache.cpp
+++ b/src/libGLESv2/renderer/d3d11/RenderStateCache.cpp
@@ -10,7 +10,7 @@
#include "libGLESv2/renderer/d3d11/RenderStateCache.h"
#include "libGLESv2/renderer/d3d11/renderer11_utils.h"
-#include "libGLESv2/renderer/Renderer.h"
+#include "libGLESv2/renderer/d3d11/Renderer11.h"
#include "libGLESv2/Framebuffer.h"
#include "libGLESv2/Renderbuffer.h"
@@ -38,7 +38,7 @@
const unsigned int RenderStateCache::kMaxDepthStencilStates = 4096;
const unsigned int RenderStateCache::kMaxSamplerStates = 4096;
-RenderStateCache::RenderStateCache() : mDevice(NULL), mCounter(0),
+RenderStateCache::RenderStateCache() : mRenderer(NULL), mCounter(0),
mBlendStateCache(kMaxBlendStates, hashBlendState, compareBlendStates),
mRasterizerStateCache(kMaxRasterizerStates, hashRasterizerState, compareRasterizerStates),
mDepthStencilStateCache(kMaxDepthStencilStates, hashDepthStencilState, compareDepthStencilStates),
@@ -51,10 +51,10 @@
clear();
}
-void RenderStateCache::initialize(ID3D11Device *device)
+void RenderStateCache::initialize(Renderer11 *renderer)
{
clear();
- mDevice = device;
+ mRenderer = renderer;
}
void RenderStateCache::clear()
@@ -81,7 +81,7 @@
ID3D11BlendState *RenderStateCache::getBlendState(const gl::Framebuffer *framebuffer, const gl::BlendState &blendState)
{
- if (!mDevice)
+ if (!mRenderer)
{
ERR("RenderStateCache is not initialized.");
return NULL;
@@ -89,6 +89,8 @@
bool mrt = false;
+ int clientVersion = mRenderer->getCurrentClientVersion();
+
BlendStateKey key = { 0 };
key.blendState = blendState;
for (unsigned int i = 0; i < D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; i++)
@@ -101,10 +103,10 @@
mrt = true;
}
- key.rtChannels[i][0] = attachment->getRedSize() > 0;
- key.rtChannels[i][1] = attachment->getGreenSize() > 0;
- key.rtChannels[i][2] = attachment->getBlueSize() > 0;
- key.rtChannels[i][3] = attachment->getAlphaSize() > 0;
+ key.rtChannels[i][0] = attachment->getRedSize(clientVersion) > 0;
+ key.rtChannels[i][1] = attachment->getGreenSize(clientVersion) > 0;
+ key.rtChannels[i][2] = attachment->getBlueSize(clientVersion) > 0;
+ key.rtChannels[i][3] = attachment->getAlphaSize(clientVersion) > 0;
}
else
{
@@ -169,7 +171,8 @@
}
ID3D11BlendState *dx11BlendState = NULL;
- HRESULT result = mDevice->CreateBlendState(&blendDesc, &dx11BlendState);
+ ID3D11Device *device = mRenderer->getDevice();
+ HRESULT result = device->CreateBlendState(&blendDesc, &dx11BlendState);
if (FAILED(result) || !dx11BlendState)
{
ERR("Unable to create a ID3D11BlendState, HRESULT: 0x%X.", result);
@@ -198,7 +201,7 @@
ID3D11RasterizerState *RenderStateCache::getRasterizerState(const gl::RasterizerState &rasterState, bool scissorEnabled)
{
- if (!mDevice)
+ if (!mRenderer)
{
ERR("RenderStateCache is not initialized.");
return NULL;
@@ -264,7 +267,8 @@
}
ID3D11RasterizerState *dx11RasterizerState = NULL;
- HRESULT result = mDevice->CreateRasterizerState(&rasterDesc, &dx11RasterizerState);
+ ID3D11Device *device = mRenderer->getDevice();
+ HRESULT result = device->CreateRasterizerState(&rasterDesc, &dx11RasterizerState);
if (FAILED(result) || !dx11RasterizerState)
{
ERR("Unable to create a ID3D11RasterizerState, HRESULT: 0x%X.", result);
@@ -293,7 +297,7 @@
ID3D11DepthStencilState *RenderStateCache::getDepthStencilState(const gl::DepthStencilState &dsState)
{
- if (!mDevice)
+ if (!mRenderer)
{
ERR("RenderStateCache is not initialized.");
return NULL;
@@ -342,7 +346,8 @@
dsDesc.BackFace.StencilFunc = gl_d3d11::ConvertComparison(dsState.stencilBackFunc);
ID3D11DepthStencilState *dx11DepthStencilState = NULL;
- HRESULT result = mDevice->CreateDepthStencilState(&dsDesc, &dx11DepthStencilState);
+ ID3D11Device *device = mRenderer->getDevice();
+ HRESULT result = device->CreateDepthStencilState(&dsDesc, &dx11DepthStencilState);
if (FAILED(result) || !dx11DepthStencilState)
{
ERR("Unable to create a ID3D11DepthStencilState, HRESULT: 0x%X.", result);
@@ -371,7 +376,7 @@
ID3D11SamplerState *RenderStateCache::getSamplerState(const gl::SamplerState &samplerState)
{
- if (!mDevice)
+ if (!mRenderer)
{
ERR("RenderStateCache is not initialized.");
return NULL;
@@ -420,7 +425,8 @@
samplerDesc.MaxLOD = samplerState.maxLod;
ID3D11SamplerState *dx11SamplerState = NULL;
- HRESULT result = mDevice->CreateSamplerState(&samplerDesc, &dx11SamplerState);
+ ID3D11Device *device = mRenderer->getDevice();
+ HRESULT result = device->CreateSamplerState(&samplerDesc, &dx11SamplerState);
if (FAILED(result) || !dx11SamplerState)
{
ERR("Unable to create a ID3D11DepthStencilState, HRESULT: 0x%X.", result);
diff --git a/src/libGLESv2/renderer/d3d11/RenderStateCache.h b/src/libGLESv2/renderer/d3d11/RenderStateCache.h
index 7f33496..b96be8e 100644
--- a/src/libGLESv2/renderer/d3d11/RenderStateCache.h
+++ b/src/libGLESv2/renderer/d3d11/RenderStateCache.h
@@ -20,6 +20,7 @@
namespace rx
{
+class Renderer11;
class RenderStateCache
{
@@ -27,7 +28,7 @@
RenderStateCache();
virtual ~RenderStateCache();
- void initialize(ID3D11Device *device);
+ void initialize(Renderer11 *renderer);
void clear();
ID3D11BlendState *getBlendState(const gl::Framebuffer *framebuffer, const gl::BlendState &blendState);
@@ -100,7 +101,7 @@
SamplerStateEqualityFunction> SamplerStateMap;
SamplerStateMap mSamplerStateCache;
- ID3D11Device *mDevice;
+ Renderer11 *mRenderer;
};
}
diff --git a/src/libGLESv2/renderer/d3d11/Renderer11.cpp b/src/libGLESv2/renderer/d3d11/Renderer11.cpp
index 8b57277..5ff4c59 100644
--- a/src/libGLESv2/renderer/d3d11/Renderer11.cpp
+++ b/src/libGLESv2/renderer/d3d11/Renderer11.cpp
@@ -291,7 +291,7 @@
// to reset the scene status and ensure the default states are reset.
void Renderer11::initializeDevice()
{
- mStateCache.initialize(mDevice);
+ mStateCache.initialize(this);
mInputLayoutCache.initialize(mDevice, mDeviceContext);
ASSERT(!mVertexDataManager && !mIndexDataManager);
diff --git a/src/libGLESv2/renderer/d3d9/Renderer9.cpp b/src/libGLESv2/renderer/d3d9/Renderer9.cpp
index b6889f9..23eb2be 100644
--- a/src/libGLESv2/renderer/d3d9/Renderer9.cpp
+++ b/src/libGLESv2/renderer/d3d9/Renderer9.cpp
@@ -1122,7 +1122,7 @@
}
gl::Renderbuffer *nullRenderbuffer = new gl::Renderbuffer(this, 0, new gl::Colorbuffer(this, width, height, GL_NONE, 0));
- gl::FramebufferAttachment *nullbuffer = new gl::FramebufferAttachment(this, 0, new gl::RenderbufferAttachment(nullRenderbuffer));
+ gl::FramebufferAttachment *nullbuffer = new gl::FramebufferAttachment(0, new gl::RenderbufferAttachment(nullRenderbuffer));
// add nullbuffer to the cache
NullColorbufferCacheEntry *oldest = &mNullColorbufferCache[0];
@@ -1241,8 +1241,8 @@
mDevice->SetDepthStencilSurface(depthStencilSurface);
SafeRelease(depthStencilSurface);
- depthSize = depthStencil->getDepthSize();
- stencilSize = depthStencil->getStencilSize();
+ depthSize = depthStencil->getDepthSize(getCurrentClientVersion());
+ stencilSize = depthStencil->getStencilSize(getCurrentClientVersion());
}
else
{