Commit 5b5d1244 by Jamie Madill

Add queries for attachment targets.

Queries for the FBO attachment Textures and Renderbuffers allow us more options than specific methods for querying the texture storage or texture serial. BUG=angle:732 Change-Id: Ieb4ddca3955fcf716dbf54331524d0c1e25fe946 Reviewed-on: https://chromium-review.googlesource.com/217028Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org>
parent bbffd556
...@@ -1391,7 +1391,7 @@ void Context::applyShaders(ProgramBinary *programBinary, bool transformFeedbackA ...@@ -1391,7 +1391,7 @@ void Context::applyShaders(ProgramBinary *programBinary, bool transformFeedbackA
{ {
const VertexAttribute *vertexAttributes = mState.getVertexArray()->getVertexAttributes(); const VertexAttribute *vertexAttributes = mState.getVertexArray()->getVertexAttributes();
VertexFormat inputLayout[gl::MAX_VERTEX_ATTRIBS]; VertexFormat inputLayout[MAX_VERTEX_ATTRIBS];
VertexFormat::GetInputLayout(inputLayout, programBinary, vertexAttributes, mState.getVertexAttribCurrentValues()); VertexFormat::GetInputLayout(inputLayout, programBinary, vertexAttributes, mState.getVertexAttribCurrentValues());
const Framebuffer *fbo = mState.getDrawFramebuffer(); const Framebuffer *fbo = mState.getDrawFramebuffer();
...@@ -1488,7 +1488,7 @@ bool Context::applyUniformBuffers() ...@@ -1488,7 +1488,7 @@ bool Context::applyUniformBuffers()
Program *programObject = getProgram(mState.getCurrentProgramId()); Program *programObject = getProgram(mState.getCurrentProgramId());
ProgramBinary *programBinary = programObject->getProgramBinary(); ProgramBinary *programBinary = programObject->getProgramBinary();
std::vector<gl::Buffer*> boundBuffers; std::vector<Buffer*> boundBuffers;
for (unsigned int uniformBlockIndex = 0; uniformBlockIndex < programBinary->getActiveUniformBlockCount(); uniformBlockIndex++) for (unsigned int uniformBlockIndex = 0; uniformBlockIndex < programBinary->getActiveUniformBlockCount(); uniformBlockIndex++)
{ {
...@@ -1677,7 +1677,7 @@ Error Context::clearBufferfi(GLenum buffer, int drawbuffer, float depth, int ste ...@@ -1677,7 +1677,7 @@ Error Context::clearBufferfi(GLenum buffer, int drawbuffer, float depth, int ste
Error Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height, Error Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
GLenum format, GLenum type, GLsizei *bufSize, void* pixels) GLenum format, GLenum type, GLsizei *bufSize, void* pixels)
{ {
gl::Framebuffer *framebuffer = mState.getReadFramebuffer(); Framebuffer *framebuffer = mState.getReadFramebuffer();
GLenum sizedInternalFormat = GetSizedInternalFormat(format, type); GLenum sizedInternalFormat = GetSizedInternalFormat(format, type);
const InternalFormat &sizedFormatInfo = GetInternalFormatInfo(sizedInternalFormat); const InternalFormat &sizedFormatInfo = GetInternalFormatInfo(sizedInternalFormat);
...@@ -2232,14 +2232,16 @@ size_t Context::getBoundFramebufferTextureSerials(FramebufferTextureSerialArray ...@@ -2232,14 +2232,16 @@ size_t Context::getBoundFramebufferTextureSerials(FramebufferTextureSerialArray
FramebufferAttachment *attachment = drawFramebuffer->getColorbuffer(i); FramebufferAttachment *attachment = drawFramebuffer->getColorbuffer(i);
if (attachment && attachment->isTexture()) if (attachment && attachment->isTexture())
{ {
(*outSerialArray)[serialCount++] = attachment->getTextureSerial(); Texture *texture = attachment->getTexture();
(*outSerialArray)[serialCount++] = texture->getTextureSerial();
} }
} }
FramebufferAttachment *depthStencilAttachment = drawFramebuffer->getDepthOrStencilbuffer(); FramebufferAttachment *depthStencilAttachment = drawFramebuffer->getDepthOrStencilbuffer();
if (depthStencilAttachment && depthStencilAttachment->isTexture()) if (depthStencilAttachment && depthStencilAttachment->isTexture())
{ {
(*outSerialArray)[serialCount++] = depthStencilAttachment->getTextureSerial(); Texture *depthStencilTexture = depthStencilAttachment->getTexture();
(*outSerialArray)[serialCount++] = depthStencilTexture->getTextureSerial();
} }
std::sort(outSerialArray->begin(), outSerialArray->begin() + serialCount); std::sort(outSerialArray->begin(), outSerialArray->begin() + serialCount);
...@@ -2269,11 +2271,11 @@ void Context::blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1 ...@@ -2269,11 +2271,11 @@ void Context::blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1
blitDepth = true; blitDepth = true;
} }
gl::Rectangle srcRect(srcX0, srcY0, srcX1 - srcX0, srcY1 - srcY0); Rectangle srcRect(srcX0, srcY0, srcX1 - srcX0, srcY1 - srcY0);
gl::Rectangle dstRect(dstX0, dstY0, dstX1 - dstX0, dstY1 - dstY0); Rectangle dstRect(dstX0, dstY0, dstX1 - dstX0, dstY1 - dstY0);
if (blitRenderTarget || blitDepth || blitStencil) if (blitRenderTarget || blitDepth || blitStencil)
{ {
const gl::Rectangle *scissor = mState.isScissorTestEnabled() ? &mState.getScissor() : NULL; const Rectangle *scissor = mState.isScissorTestEnabled() ? &mState.getScissor() : NULL;
mRenderer->blitRect(readFramebuffer, srcRect, drawFramebuffer, dstRect, scissor, mRenderer->blitRect(readFramebuffer, srcRect, drawFramebuffer, dstRect, scissor,
blitRenderTarget, blitDepth, blitStencil, filter); blitRenderTarget, blitDepth, blitStencil, filter);
} }
......
...@@ -90,11 +90,6 @@ TextureAttachment::~TextureAttachment() ...@@ -90,11 +90,6 @@ TextureAttachment::~TextureAttachment()
mTexture.set(NULL); mTexture.set(NULL);
} }
rx::TextureStorage *TextureAttachment::getTextureStorage()
{
return mTexture->getNativeTexture()->getStorageInstance();
}
GLsizei TextureAttachment::getSamples() const GLsizei TextureAttachment::getSamples() const
{ {
return 0; return 0;
...@@ -105,11 +100,6 @@ GLuint TextureAttachment::id() const ...@@ -105,11 +100,6 @@ GLuint TextureAttachment::id() const
return mTexture->id(); return mTexture->id();
} }
unsigned int TextureAttachment::getTextureSerial() const
{
return mTexture->getTextureSerial();
}
GLsizei TextureAttachment::getWidth() const GLsizei TextureAttachment::getWidth() const
{ {
return mTexture->getWidth(mIndex); return mTexture->getWidth(mIndex);
...@@ -155,6 +145,17 @@ unsigned int TextureAttachment::getSerial() const ...@@ -155,6 +145,17 @@ unsigned int TextureAttachment::getSerial() const
return mTexture->getRenderTargetSerial(mIndex); return mTexture->getRenderTargetSerial(mIndex);
} }
Texture *TextureAttachment::getTexture()
{
return mTexture.get();
}
Renderbuffer *TextureAttachment::getRenderbuffer()
{
UNREACHABLE();
return NULL;
}
////// RenderbufferAttachment Implementation ////// ////// RenderbufferAttachment Implementation //////
RenderbufferAttachment::RenderbufferAttachment(GLenum binding, Renderbuffer *renderbuffer) RenderbufferAttachment::RenderbufferAttachment(GLenum binding, Renderbuffer *renderbuffer)
...@@ -174,12 +175,6 @@ rx::RenderTarget *RenderbufferAttachment::getRenderTarget() ...@@ -174,12 +175,6 @@ rx::RenderTarget *RenderbufferAttachment::getRenderTarget()
return mRenderbuffer->getStorage()->getRenderTarget(); return mRenderbuffer->getStorage()->getRenderTarget();
} }
rx::TextureStorage *RenderbufferAttachment::getTextureStorage()
{
UNREACHABLE();
return NULL;
}
GLsizei RenderbufferAttachment::getWidth() const GLsizei RenderbufferAttachment::getWidth() const
{ {
return mRenderbuffer->getWidth(); return mRenderbuffer->getWidth();
...@@ -230,10 +225,15 @@ GLint RenderbufferAttachment::layer() const ...@@ -230,10 +225,15 @@ GLint RenderbufferAttachment::layer() const
return 0; return 0;
} }
unsigned int RenderbufferAttachment::getTextureSerial() const Texture *RenderbufferAttachment::getTexture()
{ {
UNREACHABLE(); UNREACHABLE();
return 0; return NULL;
}
Renderbuffer *RenderbufferAttachment::getRenderbuffer()
{
return mRenderbuffer.get();
} }
} }
...@@ -57,7 +57,6 @@ class FramebufferAttachment ...@@ -57,7 +57,6 @@ class FramebufferAttachment
// Child class interface // Child class interface
virtual rx::RenderTarget *getRenderTarget() = 0; virtual rx::RenderTarget *getRenderTarget() = 0;
virtual rx::TextureStorage *getTextureStorage() = 0;
virtual GLsizei getWidth() const = 0; virtual GLsizei getWidth() const = 0;
virtual GLsizei getHeight() const = 0; virtual GLsizei getHeight() const = 0;
...@@ -71,7 +70,9 @@ class FramebufferAttachment ...@@ -71,7 +70,9 @@ class FramebufferAttachment
virtual GLenum type() const = 0; virtual GLenum type() const = 0;
virtual GLint mipLevel() const = 0; virtual GLint mipLevel() const = 0;
virtual GLint layer() const = 0; virtual GLint layer() const = 0;
virtual unsigned int getTextureSerial() const = 0;
virtual Texture *getTexture() = 0;
virtual Renderbuffer *getRenderbuffer() = 0;
private: private:
DISALLOW_COPY_AND_ASSIGN(FramebufferAttachment); DISALLOW_COPY_AND_ASSIGN(FramebufferAttachment);
...@@ -85,10 +86,8 @@ class TextureAttachment : public FramebufferAttachment ...@@ -85,10 +86,8 @@ class TextureAttachment : public FramebufferAttachment
TextureAttachment(GLenum binding, Texture *texture, const ImageIndex &index); TextureAttachment(GLenum binding, Texture *texture, const ImageIndex &index);
virtual ~TextureAttachment(); virtual ~TextureAttachment();
rx::TextureStorage *getTextureStorage();
virtual GLsizei getSamples() const; virtual GLsizei getSamples() const;
virtual GLuint id() const; virtual GLuint id() const;
virtual unsigned int getTextureSerial() const;
virtual GLsizei getWidth() const; virtual GLsizei getWidth() const;
virtual GLsizei getHeight() const; virtual GLsizei getHeight() const;
...@@ -102,6 +101,9 @@ class TextureAttachment : public FramebufferAttachment ...@@ -102,6 +101,9 @@ class TextureAttachment : public FramebufferAttachment
virtual rx::RenderTarget *getRenderTarget(); virtual rx::RenderTarget *getRenderTarget();
virtual unsigned int getSerial() const; virtual unsigned int getSerial() const;
virtual Texture *getTexture();
virtual Renderbuffer *getRenderbuffer();
private: private:
DISALLOW_COPY_AND_ASSIGN(TextureAttachment); DISALLOW_COPY_AND_ASSIGN(TextureAttachment);
...@@ -117,7 +119,6 @@ class RenderbufferAttachment : public FramebufferAttachment ...@@ -117,7 +119,6 @@ class RenderbufferAttachment : public FramebufferAttachment
virtual ~RenderbufferAttachment(); virtual ~RenderbufferAttachment();
rx::RenderTarget *getRenderTarget(); rx::RenderTarget *getRenderTarget();
rx::TextureStorage *getTextureStorage();
virtual GLsizei getWidth() const; virtual GLsizei getWidth() const;
virtual GLsizei getHeight() const; virtual GLsizei getHeight() const;
...@@ -131,7 +132,9 @@ class RenderbufferAttachment : public FramebufferAttachment ...@@ -131,7 +132,9 @@ class RenderbufferAttachment : public FramebufferAttachment
virtual GLenum type() const; virtual GLenum type() const;
virtual GLint mipLevel() const; virtual GLint mipLevel() const;
virtual GLint layer() const; virtual GLint layer() const;
virtual unsigned int getTextureSerial() const;
virtual Texture *getTexture();
virtual Renderbuffer *getRenderbuffer();
private: private:
DISALLOW_COPY_AND_ASSIGN(RenderbufferAttachment); DISALLOW_COPY_AND_ASSIGN(RenderbufferAttachment);
......
...@@ -3086,7 +3086,8 @@ ID3D11Texture2D *Renderer11::resolveMultisampledTexture(ID3D11Texture2D *source, ...@@ -3086,7 +3086,8 @@ ID3D11Texture2D *Renderer11::resolveMultisampledTexture(ID3D11Texture2D *source,
void Renderer11::invalidateFBOAttachmentSwizzles(gl::FramebufferAttachment *attachment, int mipLevel) void Renderer11::invalidateFBOAttachmentSwizzles(gl::FramebufferAttachment *attachment, int mipLevel)
{ {
ASSERT(attachment->isTexture()); ASSERT(attachment->isTexture());
TextureStorage *texStorage = attachment->getTextureStorage(); gl::Texture *texture = attachment->getTexture();
TextureStorage *texStorage = texture->getNativeTexture()->getStorageInstance();
if (texStorage) if (texStorage)
{ {
TextureStorage11 *texStorage11 = TextureStorage11::makeTextureStorage11(texStorage); TextureStorage11 *texStorage11 = TextureStorage11::makeTextureStorage11(texStorage);
......
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