Commit 297eb16d by Jamie Madill

Re-enable hazard warnings for setting render targets that are currently bound as SRVs.

We can manually unset applied textures in SetRenderTargets. This should fix the spurious warnings while still showing a warning on error cases. BUG= R=geofflang@chromium.org, shannonwoods@chromium.org Review URL: https://codereview.appspot.com/15880044
parent 0f0edf94
...@@ -129,6 +129,11 @@ unsigned int RenderbufferTexture2D::getSerial() const ...@@ -129,6 +129,11 @@ unsigned int RenderbufferTexture2D::getSerial() const
return mTexture2D->getRenderTargetSerial(mTarget); return mTexture2D->getRenderTargetSerial(mTarget);
} }
unsigned int RenderbufferTexture2D::getTextureSerial() const
{
return mTexture2D->getTextureSerial();
}
///// RenderbufferTextureCubeMap Implementation //////// ///// RenderbufferTextureCubeMap Implementation ////////
RenderbufferTextureCubeMap::RenderbufferTextureCubeMap(TextureCubeMap *texture, GLenum target) : mTarget(target) RenderbufferTextureCubeMap::RenderbufferTextureCubeMap(TextureCubeMap *texture, GLenum target) : mTarget(target)
...@@ -193,6 +198,11 @@ unsigned int RenderbufferTextureCubeMap::getSerial() const ...@@ -193,6 +198,11 @@ unsigned int RenderbufferTextureCubeMap::getSerial() const
return mTextureCubeMap->getRenderTargetSerial(mTarget); return mTextureCubeMap->getRenderTargetSerial(mTarget);
} }
unsigned int RenderbufferTextureCubeMap::getTextureSerial() const
{
return mTextureCubeMap->getTextureSerial();
}
////// Renderbuffer Implementation ////// ////// Renderbuffer Implementation //////
Renderbuffer::Renderbuffer(rx::Renderer *renderer, GLuint id, RenderbufferInterface *instance) : RefCountObject(id) Renderbuffer::Renderbuffer(rx::Renderer *renderer, GLuint id, RenderbufferInterface *instance) : RefCountObject(id)
...@@ -292,6 +302,11 @@ unsigned int Renderbuffer::getSerial() const ...@@ -292,6 +302,11 @@ unsigned int Renderbuffer::getSerial() const
return mInstance->getSerial(); return mInstance->getSerial();
} }
unsigned int Renderbuffer::getTextureSerial() const
{
return mInstance->getTextureSerial();
}
void Renderbuffer::setStorage(RenderbufferStorage *newStorage) void Renderbuffer::setStorage(RenderbufferStorage *newStorage)
{ {
ASSERT(newStorage != NULL); ASSERT(newStorage != NULL);
......
...@@ -60,6 +60,7 @@ class RenderbufferInterface ...@@ -60,6 +60,7 @@ class RenderbufferInterface
GLuint getStencilSize() const; GLuint getStencilSize() const;
virtual unsigned int getSerial() const = 0; virtual unsigned int getSerial() const = 0;
virtual unsigned int getTextureSerial() const = 0;
private: private:
DISALLOW_COPY_AND_ASSIGN(RenderbufferInterface); DISALLOW_COPY_AND_ASSIGN(RenderbufferInterface);
...@@ -85,6 +86,7 @@ class RenderbufferTexture2D : public RenderbufferInterface ...@@ -85,6 +86,7 @@ class RenderbufferTexture2D : public RenderbufferInterface
virtual GLsizei getSamples() const; virtual GLsizei getSamples() const;
virtual unsigned int getSerial() const; virtual unsigned int getSerial() const;
virtual unsigned int getTextureSerial() const;
private: private:
DISALLOW_COPY_AND_ASSIGN(RenderbufferTexture2D); DISALLOW_COPY_AND_ASSIGN(RenderbufferTexture2D);
...@@ -113,6 +115,7 @@ class RenderbufferTextureCubeMap : public RenderbufferInterface ...@@ -113,6 +115,7 @@ class RenderbufferTextureCubeMap : public RenderbufferInterface
virtual GLsizei getSamples() const; virtual GLsizei getSamples() const;
virtual unsigned int getSerial() const; virtual unsigned int getSerial() const;
virtual unsigned int getTextureSerial() const;
private: private:
DISALLOW_COPY_AND_ASSIGN(RenderbufferTextureCubeMap); DISALLOW_COPY_AND_ASSIGN(RenderbufferTextureCubeMap);
...@@ -141,6 +144,7 @@ class RenderbufferStorage : public RenderbufferInterface ...@@ -141,6 +144,7 @@ class RenderbufferStorage : public RenderbufferInterface
virtual GLsizei getSamples() const; virtual GLsizei getSamples() const;
virtual unsigned int getSerial() const; virtual unsigned int getSerial() const;
virtual unsigned int getTextureSerial() const { return 0; }
static unsigned int issueSerial(); static unsigned int issueSerial();
static unsigned int issueCubeSerials(); static unsigned int issueCubeSerials();
...@@ -193,6 +197,7 @@ class Renderbuffer : public RefCountObject ...@@ -193,6 +197,7 @@ class Renderbuffer : public RefCountObject
GLsizei getSamples() const; GLsizei getSamples() const;
unsigned int getSerial() const; unsigned int getSerial() const;
unsigned int getTextureSerial() const;
void setStorage(RenderbufferStorage *newStorage); void setStorage(RenderbufferStorage *newStorage);
......
...@@ -243,8 +243,6 @@ EGLint Renderer11::initialize() ...@@ -243,8 +243,6 @@ EGLint Renderer11::initialize()
{ {
D3D11_MESSAGE_ID hideMessages[] = D3D11_MESSAGE_ID hideMessages[] =
{ {
D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD,
D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD,
D3D11_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET D3D11_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET
}; };
...@@ -919,6 +917,25 @@ bool Renderer11::applyRenderTarget(gl::Framebuffer *framebuffer) ...@@ -919,6 +917,25 @@ bool Renderer11::applyRenderTarget(gl::Framebuffer *framebuffer)
renderTargetFormat = colorbuffer->getActualFormat(); renderTargetFormat = colorbuffer->getActualFormat();
missingColorRenderTarget = false; missingColorRenderTarget = false;
} }
#ifdef _DEBUG
// Workaround for Debug SETSHADERRESOURCES_HAZARD D3D11 warnings
for (unsigned int vertexSerialIndex = 0; vertexSerialIndex < gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS; vertexSerialIndex++)
{
if (colorbuffer->getTextureSerial() != 0 && mCurVertexTextureSerials[vertexSerialIndex] == colorbuffer->getTextureSerial())
{
setTexture(gl::SAMPLER_VERTEX, vertexSerialIndex, NULL);
}
}
for (unsigned int pixelSerialIndex = 0; pixelSerialIndex < gl::MAX_TEXTURE_IMAGE_UNITS; pixelSerialIndex++)
{
if (colorbuffer->getTextureSerial() != 0 && mCurPixelTextureSerials[pixelSerialIndex] == colorbuffer->getTextureSerial())
{
setTexture(gl::SAMPLER_PIXEL, pixelSerialIndex, NULL);
}
}
#endif
} }
} }
......
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