зеркало из https://github.com/mozilla/gecko-dev.git
Bug 942506 - Remove ApplyFilterToBoundTexture from GLContext - r=bjacob
Move it to CompositorOGL.
This commit is contained in:
Родитель
eb13a35408
Коммит
01884a573b
|
@ -8,6 +8,7 @@
|
||||||
#include "GLUploadHelpers.h"
|
#include "GLUploadHelpers.h"
|
||||||
#include "DecomposeIntoNoRepeatTriangles.h"
|
#include "DecomposeIntoNoRepeatTriangles.h"
|
||||||
#include "GLContext.h"
|
#include "GLContext.h"
|
||||||
|
#include "ScopedGLHelpers.h"
|
||||||
#include "nsRect.h"
|
#include "nsRect.h"
|
||||||
#include "gfx2DGlue.h"
|
#include "gfx2DGlue.h"
|
||||||
#include "gfxUtils.h"
|
#include "gfxUtils.h"
|
||||||
|
@ -143,7 +144,8 @@ GLBlitTextureImageHelper::BlitTextureImage(TextureImage *aSrc, const nsIntRect&
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureImage::ScopedBindTexture texBind(aSrc, LOCAL_GL_TEXTURE0);
|
ScopedBindTextureUnit autoTexUnit(mGL, LOCAL_GL_TEXTURE0);
|
||||||
|
ScopedBindTexture autoTex(mGL, aSrc->GetTextureID());
|
||||||
|
|
||||||
mGL->fBindBuffer(LOCAL_GL_ARRAY_BUFFER, 0);
|
mGL->fBindBuffer(LOCAL_GL_ARRAY_BUFFER, 0);
|
||||||
|
|
||||||
|
|
|
@ -1189,24 +1189,6 @@ GLContext::ListHasExtension(const GLubyte *extensions, const char *extension)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLContext::ApplyFilterToBoundTexture(GraphicsFilter aFilter)
|
|
||||||
{
|
|
||||||
ApplyFilterToBoundTexture(LOCAL_GL_TEXTURE_2D, aFilter);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLContext::ApplyFilterToBoundTexture(GLuint aTarget,
|
|
||||||
GraphicsFilter aFilter)
|
|
||||||
{
|
|
||||||
if (aFilter == GraphicsFilter::FILTER_NEAREST) {
|
|
||||||
fTexParameteri(aTarget, LOCAL_GL_TEXTURE_MIN_FILTER, LOCAL_GL_NEAREST);
|
|
||||||
fTexParameteri(aTarget, LOCAL_GL_TEXTURE_MAG_FILTER, LOCAL_GL_NEAREST);
|
|
||||||
} else {
|
|
||||||
fTexParameteri(aTarget, LOCAL_GL_TEXTURE_MIN_FILTER, LOCAL_GL_LINEAR);
|
|
||||||
fTexParameteri(aTarget, LOCAL_GL_TEXTURE_MAG_FILTER, LOCAL_GL_LINEAR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
GLContext::DetermineCaps()
|
GLContext::DetermineCaps()
|
||||||
{
|
{
|
||||||
|
|
|
@ -2482,17 +2482,6 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual bool ReleaseTexImage() { return false; }
|
virtual bool ReleaseTexImage() { return false; }
|
||||||
|
|
||||||
/**
|
|
||||||
* Applies aFilter to the texture currently bound to GL_TEXTURE_2D.
|
|
||||||
*/
|
|
||||||
void ApplyFilterToBoundTexture(GraphicsFilter aFilter);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Applies aFilter to the texture currently bound to aTarget.
|
|
||||||
*/
|
|
||||||
void ApplyFilterToBoundTexture(GLuint aTarget,
|
|
||||||
GraphicsFilter aFilter);
|
|
||||||
|
|
||||||
// Before reads from offscreen texture
|
// Before reads from offscreen texture
|
||||||
void GuaranteeResolve();
|
void GuaranteeResolve();
|
||||||
|
|
||||||
|
|
|
@ -205,13 +205,6 @@ BasicTextureImage::BindTexture(GLenum aTextureUnit)
|
||||||
mGLContext->fActiveTexture(LOCAL_GL_TEXTURE0);
|
mGLContext->fActiveTexture(LOCAL_GL_TEXTURE0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
BasicTextureImage::ApplyFilter()
|
|
||||||
{
|
|
||||||
mGLContext->ApplyFilterToBoundTexture(mFilter);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
already_AddRefed<gfxASurface>
|
already_AddRefed<gfxASurface>
|
||||||
BasicTextureImage::GetSurfaceForUpdate(const gfxIntSize& aSize, ImageFormat aFmt)
|
BasicTextureImage::GetSurfaceForUpdate(const gfxIntSize& aSize, ImageFormat aFmt)
|
||||||
{
|
{
|
||||||
|
@ -637,12 +630,6 @@ TiledTextureImage::BindTexture(GLenum aTextureUnit)
|
||||||
mImages[mCurrentImage]->BindTexture(aTextureUnit);
|
mImages[mCurrentImage]->BindTexture(aTextureUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
TiledTextureImage::ApplyFilter()
|
|
||||||
{
|
|
||||||
mGL->ApplyFilterToBoundTexture(mFilter);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Resize, trying to reuse tiles. The reuse strategy is to decide on reuse per
|
* Resize, trying to reuse tiles. The reuse strategy is to decide on reuse per
|
||||||
* column. A tile on a column is reused if it hasn't changed size, otherwise it
|
* column. A tile on a column is reused if it hasn't changed size, otherwise it
|
||||||
|
@ -745,16 +732,6 @@ uint32_t TiledTextureImage::GetTileCount()
|
||||||
return mImages.Length();
|
return mImages.Length();
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureImage::ScopedBindTexture::ScopedBindTexture(TextureImage* aTexture,
|
|
||||||
GLenum aTextureUnit)
|
|
||||||
: mTexture(aTexture)
|
|
||||||
{
|
|
||||||
if (mTexture) {
|
|
||||||
MOZ_ASSERT(aTextureUnit >= LOCAL_GL_TEXTURE0);
|
|
||||||
mTexture->BindTexture(aTextureUnit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
already_AddRefed<TextureImage>
|
already_AddRefed<TextureImage>
|
||||||
CreateBasicTextureImage(GLContext* aGL,
|
CreateBasicTextureImage(GLContext* aGL,
|
||||||
const nsIntSize& aSize,
|
const nsIntSize& aSize,
|
||||||
|
|
|
@ -185,41 +185,6 @@ public:
|
||||||
const gfx::IntPoint* aSrcOffset = nullptr);
|
const gfx::IntPoint* aSrcOffset = nullptr);
|
||||||
|
|
||||||
virtual void BindTexture(GLenum aTextureUnit) = 0;
|
virtual void BindTexture(GLenum aTextureUnit) = 0;
|
||||||
virtual void ReleaseTexture() {}
|
|
||||||
|
|
||||||
void BindTextureAndApplyFilter(GLenum aTextureUnit) {
|
|
||||||
BindTexture(aTextureUnit);
|
|
||||||
ApplyFilter();
|
|
||||||
}
|
|
||||||
|
|
||||||
class ScopedBindTexture
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ScopedBindTexture(TextureImage *aTexture, GLenum aTextureUnit);
|
|
||||||
|
|
||||||
~ScopedBindTexture()
|
|
||||||
{
|
|
||||||
if (mTexture) {
|
|
||||||
mTexture->ReleaseTexture();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
TextureImage *mTexture;
|
|
||||||
};
|
|
||||||
|
|
||||||
class ScopedBindTextureAndApplyFilter
|
|
||||||
: public ScopedBindTexture
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ScopedBindTextureAndApplyFilter(TextureImage *aTexture, GLenum aTextureUnit) :
|
|
||||||
ScopedBindTexture(aTexture, aTextureUnit)
|
|
||||||
{
|
|
||||||
if (mTexture) {
|
|
||||||
mTexture->ApplyFilter();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the image format of the texture. Only valid after a matching
|
* Returns the image format of the texture. Only valid after a matching
|
||||||
|
@ -247,12 +212,6 @@ public:
|
||||||
|
|
||||||
void SetFilter(GraphicsFilter aFilter) { mFilter = aFilter; }
|
void SetFilter(GraphicsFilter aFilter) { mFilter = aFilter; }
|
||||||
|
|
||||||
/**
|
|
||||||
* Applies this TextureImage's filter, assuming that its texture is
|
|
||||||
* the currently bound texture.
|
|
||||||
*/
|
|
||||||
virtual void ApplyFilter() = 0;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class GLContext;
|
friend class GLContext;
|
||||||
|
|
||||||
|
@ -345,9 +304,7 @@ public:
|
||||||
|
|
||||||
virtual void Resize(const nsIntSize& aSize);
|
virtual void Resize(const nsIntSize& aSize);
|
||||||
|
|
||||||
virtual void ApplyFilter();
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
GLuint mTexture;
|
GLuint mTexture;
|
||||||
TextureState mTextureState;
|
TextureState mTextureState;
|
||||||
nsRefPtr<GLContext> mGLContext;
|
nsRefPtr<GLContext> mGLContext;
|
||||||
|
@ -390,7 +347,6 @@ public:
|
||||||
virtual bool DirectUpdate(gfxASurface* aSurf, const nsIntRegion& aRegion, const nsIntPoint& aFrom = nsIntPoint(0,0));
|
virtual bool DirectUpdate(gfxASurface* aSurf, const nsIntRegion& aRegion, const nsIntPoint& aFrom = nsIntPoint(0,0));
|
||||||
virtual bool InUpdate() const { return mInUpdate; }
|
virtual bool InUpdate() const { return mInUpdate; }
|
||||||
virtual void BindTexture(GLenum);
|
virtual void BindTexture(GLenum);
|
||||||
virtual void ApplyFilter();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual gfx::IntRect GetSrcTileRect();
|
virtual gfx::IntRect GetSrcTileRect();
|
||||||
|
|
|
@ -311,12 +311,6 @@ TextureImageEGL::DestroyEGLSurface(void)
|
||||||
mSurface = nullptr;
|
mSurface = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
TextureImageEGL::ApplyFilter()
|
|
||||||
{
|
|
||||||
mGLContext->ApplyFilterToBoundTexture(mFilter);
|
|
||||||
}
|
|
||||||
|
|
||||||
already_AddRefed<TextureImage>
|
already_AddRefed<TextureImage>
|
||||||
CreateTextureImageEGL(GLContext *gl,
|
CreateTextureImageEGL(GLContext *gl,
|
||||||
const nsIntSize& aSize,
|
const nsIntSize& aSize,
|
||||||
|
|
|
@ -75,8 +75,6 @@ protected:
|
||||||
TextureState mTextureState;
|
TextureState mTextureState;
|
||||||
|
|
||||||
bool mBound;
|
bool mBound;
|
||||||
|
|
||||||
virtual void ApplyFilter();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
already_AddRefed<TextureImage>
|
already_AddRefed<TextureImage>
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "nsServiceManagerUtils.h" // for do_GetService
|
#include "nsServiceManagerUtils.h" // for do_GetService
|
||||||
#include "nsString.h" // for nsString, nsAutoCString, etc
|
#include "nsString.h" // for nsString, nsAutoCString, etc
|
||||||
#include "DecomposeIntoNoRepeatTriangles.h"
|
#include "DecomposeIntoNoRepeatTriangles.h"
|
||||||
|
#include "ScopedGLHelpers.h"
|
||||||
|
|
||||||
#if MOZ_ANDROID_OMTC
|
#if MOZ_ANDROID_OMTC
|
||||||
#include "TexturePoolOGL.h"
|
#include "TexturePoolOGL.h"
|
||||||
|
@ -978,28 +979,57 @@ CompositorOGL::GetProgramTypeForEffect(Effect *aEffect) const
|
||||||
}
|
}
|
||||||
|
|
||||||
struct MOZ_STACK_CLASS AutoBindTexture
|
struct MOZ_STACK_CLASS AutoBindTexture
|
||||||
|
: public ScopedGLWrapper<AutoBindTexture>
|
||||||
{
|
{
|
||||||
AutoBindTexture() : mTexture(nullptr) {}
|
friend struct ScopedGLWrapper<AutoBindTexture>;
|
||||||
AutoBindTexture(TextureSourceOGL* aTexture, GLenum aTextureUnit)
|
|
||||||
: mTexture(nullptr) { Bind(aTexture, aTextureUnit); }
|
protected:
|
||||||
~AutoBindTexture()
|
GLenum mTexUnit;
|
||||||
|
GLuint mOldTexId;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AutoBindTexture(GLContext* aGL)
|
||||||
|
: ScopedGLWrapper<AutoBindTexture>(aGL)
|
||||||
|
, mTexUnit(0)
|
||||||
|
, mOldTexId((GLuint) -1)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
AutoBindTexture(GLContext* aGL, TextureSourceOGL* aTexture,
|
||||||
|
GLenum aTexUnit = LOCAL_GL_TEXTURE0)
|
||||||
|
: ScopedGLWrapper<AutoBindTexture>(aGL)
|
||||||
|
, mTexUnit(0)
|
||||||
|
, mOldTexId((GLuint) -1)
|
||||||
{
|
{
|
||||||
if (mTexture) {
|
Bind(aTexture, aTexUnit);
|
||||||
mTexture->UnbindTexture();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bind(TextureSourceOGL* aTexture, GLenum aTextureUnit)
|
void Bind(TextureSourceOGL* aTexture,
|
||||||
|
GLenum aTexUnit = LOCAL_GL_TEXTURE0)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(!mTexture);
|
if (!aTexture)
|
||||||
mTexture = aTexture;
|
return;
|
||||||
mTexture->BindTexture(aTextureUnit);
|
|
||||||
|
MOZ_ASSERT(mOldTexId == (GLuint) -1);
|
||||||
|
mTexUnit = aTexUnit;
|
||||||
|
|
||||||
|
ScopedBindTextureUnit savedTexUnit(mGL, aTexUnit);
|
||||||
|
|
||||||
|
mGL->GetUIntegerv(LOCAL_GL_TEXTURE_BINDING_2D, &mOldTexId);
|
||||||
|
aTexture->BindTexture(mTexUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
TextureSourceOGL* mTexture;
|
void UnwrapImpl()
|
||||||
|
{
|
||||||
|
if (mOldTexId == (GLuint) -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ScopedBindTextureUnit savedTexUnit(mGL, mTexUnit);
|
||||||
|
mGL->fBindTexture(LOCAL_GL_TEXTURE_2D, mOldTexId);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
CompositorOGL::DrawLines(const std::vector<gfx::Point>& aLines, const gfx::Rect& aClipRect,
|
CompositorOGL::DrawLines(const std::vector<gfx::Point>& aLines, const gfx::Rect& aClipRect,
|
||||||
const gfx::Color& aColor,
|
const gfx::Color& aColor,
|
||||||
|
@ -1019,6 +1049,20 @@ CompositorOGL::DrawLines(const std::vector<gfx::Point>& aLines, const gfx::Rect&
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies aFilter to the texture currently bound to aTarget.
|
||||||
|
*/
|
||||||
|
void ApplyFilterToBoundTexture(GLContext* aGL,
|
||||||
|
GraphicsFilter aFilter,
|
||||||
|
GLuint aTarget = LOCAL_GL_TEXTURE_2D)
|
||||||
|
{
|
||||||
|
GLenum filter =
|
||||||
|
(aFilter == GraphicsFilter::FILTER_NEAREST ? LOCAL_GL_NEAREST : LOCAL_GL_LINEAR);
|
||||||
|
|
||||||
|
aGL->fTexParameteri(aTarget, LOCAL_GL_TEXTURE_MIN_FILTER, filter);
|
||||||
|
aGL->fTexParameteri(aTarget, LOCAL_GL_TEXTURE_MAG_FILTER, filter);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
||||||
const Rect& aClipRect,
|
const Rect& aClipRect,
|
||||||
|
@ -1112,7 +1156,7 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
||||||
|
|
||||||
program->SetRenderColor(color);
|
program->SetRenderColor(color);
|
||||||
|
|
||||||
AutoBindTexture bindMask;
|
AutoBindTexture bindMask(mGLContext);
|
||||||
if (maskType != MaskNone) {
|
if (maskType != MaskNone) {
|
||||||
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE0);
|
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE0);
|
||||||
program->SetMaskTextureUnit(0);
|
program->SetMaskTextureUnit(0);
|
||||||
|
@ -1137,7 +1181,7 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
||||||
LOCAL_GL_ONE, LOCAL_GL_ONE);
|
LOCAL_GL_ONE, LOCAL_GL_ONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
AutoBindTexture bindSource(source->AsSourceOGL(), LOCAL_GL_TEXTURE0);
|
AutoBindTexture bindSource(mGLContext, source->AsSourceOGL(), LOCAL_GL_TEXTURE0);
|
||||||
|
|
||||||
gfx3DMatrix textureTransform = source->AsSourceOGL()->GetTextureTransform();
|
gfx3DMatrix textureTransform = source->AsSourceOGL()->GetTextureTransform();
|
||||||
program->SetTextureTransform(textureTransform);
|
program->SetTextureTransform(textureTransform);
|
||||||
|
@ -1155,13 +1199,13 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
||||||
filter = GraphicsFilter::FILTER_NEAREST;
|
filter = GraphicsFilter::FILTER_NEAREST;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
mGLContext->ApplyFilterToBoundTexture(source->AsSourceOGL()->GetTextureTarget(),
|
ApplyFilterToBoundTexture(mGLContext, filter,
|
||||||
filter);
|
source->AsSourceOGL()->GetTextureTarget());
|
||||||
|
|
||||||
program->SetTextureUnit(0);
|
program->SetTextureUnit(0);
|
||||||
program->SetLayerOpacity(aOpacity);
|
program->SetLayerOpacity(aOpacity);
|
||||||
|
|
||||||
AutoBindTexture bindMask;
|
AutoBindTexture bindMask(mGLContext);
|
||||||
if (maskType != MaskNone) {
|
if (maskType != MaskNone) {
|
||||||
mGLContext->fActiveTexture(LOCAL_GL_TEXTURE1);
|
mGLContext->fActiveTexture(LOCAL_GL_TEXTURE1);
|
||||||
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE1);
|
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE1);
|
||||||
|
@ -1193,18 +1237,18 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
||||||
|
|
||||||
GraphicsFilter filter = ThebesFilter(effectYCbCr->mFilter);
|
GraphicsFilter filter = ThebesFilter(effectYCbCr->mFilter);
|
||||||
|
|
||||||
AutoBindTexture bindY(sourceY, LOCAL_GL_TEXTURE0);
|
AutoBindTexture bindY(mGLContext, sourceY, LOCAL_GL_TEXTURE0);
|
||||||
mGLContext->ApplyFilterToBoundTexture(filter);
|
ApplyFilterToBoundTexture(mGLContext, filter);
|
||||||
AutoBindTexture bindCb(sourceCb, LOCAL_GL_TEXTURE1);
|
AutoBindTexture bindCb(mGLContext, sourceCb, LOCAL_GL_TEXTURE1);
|
||||||
mGLContext->ApplyFilterToBoundTexture(filter);
|
ApplyFilterToBoundTexture(mGLContext, filter);
|
||||||
AutoBindTexture bindCr(sourceCr, LOCAL_GL_TEXTURE2);
|
AutoBindTexture bindCr(mGLContext, sourceCr, LOCAL_GL_TEXTURE2);
|
||||||
mGLContext->ApplyFilterToBoundTexture(filter);
|
ApplyFilterToBoundTexture(mGLContext, filter);
|
||||||
|
|
||||||
program->SetYCbCrTextureUnits(Y, Cb, Cr);
|
program->SetYCbCrTextureUnits(Y, Cb, Cr);
|
||||||
program->SetLayerOpacity(aOpacity);
|
program->SetLayerOpacity(aOpacity);
|
||||||
program->SetTextureTransform(gfx3DMatrix());
|
program->SetTextureTransform(gfx3DMatrix());
|
||||||
|
|
||||||
AutoBindTexture bindMask;
|
AutoBindTexture bindMask(mGLContext);
|
||||||
if (maskType != MaskNone) {
|
if (maskType != MaskNone) {
|
||||||
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE3);
|
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE3);
|
||||||
program->SetMaskTextureUnit(3);
|
program->SetMaskTextureUnit(3);
|
||||||
|
@ -1228,7 +1272,7 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
||||||
program->SetLayerOpacity(aOpacity);
|
program->SetLayerOpacity(aOpacity);
|
||||||
program->SetTextureTransform(gfx3DMatrix());
|
program->SetTextureTransform(gfx3DMatrix());
|
||||||
|
|
||||||
AutoBindTexture bindMask;
|
AutoBindTexture bindMask(mGLContext);
|
||||||
if (maskType != MaskNone) {
|
if (maskType != MaskNone) {
|
||||||
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE1);
|
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE1);
|
||||||
program->SetMaskTextureUnit(1);
|
program->SetMaskTextureUnit(1);
|
||||||
|
@ -1277,8 +1321,8 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
||||||
LOCAL_GL_ONE, LOCAL_GL_ONE);
|
LOCAL_GL_ONE, LOCAL_GL_ONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
AutoBindTexture bindSourceOnBlack(sourceOnBlack, LOCAL_GL_TEXTURE0);
|
AutoBindTexture bindSourceOnBlack(mGLContext, sourceOnBlack, LOCAL_GL_TEXTURE0);
|
||||||
AutoBindTexture bindSourceOnWhite(sourceOnWhite, LOCAL_GL_TEXTURE1);
|
AutoBindTexture bindSourceOnWhite(mGLContext, sourceOnWhite, LOCAL_GL_TEXTURE1);
|
||||||
|
|
||||||
program->Activate();
|
program->Activate();
|
||||||
program->SetBlackTextureUnit(0);
|
program->SetBlackTextureUnit(0);
|
||||||
|
@ -1288,7 +1332,7 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
||||||
program->SetTextureTransform(gfx3DMatrix());
|
program->SetTextureTransform(gfx3DMatrix());
|
||||||
program->SetRenderOffset(offset.x, offset.y);
|
program->SetRenderOffset(offset.x, offset.y);
|
||||||
program->SetLayerQuadRect(aRect);
|
program->SetLayerQuadRect(aRect);
|
||||||
AutoBindTexture bindMask;
|
AutoBindTexture bindMask(mGLContext);
|
||||||
if (maskType != MaskNone) {
|
if (maskType != MaskNone) {
|
||||||
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE2);
|
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE2);
|
||||||
program->SetMaskTextureUnit(2);
|
program->SetMaskTextureUnit(2);
|
||||||
|
|
|
@ -32,8 +32,6 @@ public:
|
||||||
|
|
||||||
virtual void BindTexture(GLenum aTextureUnit) MOZ_OVERRIDE;
|
virtual void BindTexture(GLenum aTextureUnit) MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual void UnbindTexture() MOZ_OVERRIDE {}
|
|
||||||
|
|
||||||
virtual gfx::IntSize GetSize() const MOZ_OVERRIDE;
|
virtual gfx::IntSize GetSize() const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual TextureSourceOGL* AsSourceOGL() MOZ_OVERRIDE { return this; }
|
virtual TextureSourceOGL* AsSourceOGL() MOZ_OVERRIDE { return this; }
|
||||||
|
|
|
@ -41,8 +41,6 @@ public:
|
||||||
|
|
||||||
virtual GLenum GetWrapMode() const MOZ_OVERRIDE { return LOCAL_GL_CLAMP_TO_EDGE; }
|
virtual GLenum GetWrapMode() const MOZ_OVERRIDE { return LOCAL_GL_CLAMP_TO_EDGE; }
|
||||||
|
|
||||||
virtual void UnbindTexture() MOZ_OVERRIDE {}
|
|
||||||
|
|
||||||
// MacIOSurfaceTextureSourceOGL doesn't own any gl texture
|
// MacIOSurfaceTextureSourceOGL doesn't own any gl texture
|
||||||
virtual void DeallocateDeviceData() {}
|
virtual void DeallocateDeviceData() {}
|
||||||
|
|
||||||
|
|
|
@ -127,8 +127,6 @@ public:
|
||||||
|
|
||||||
virtual void BindTexture(GLenum aTextureUnit) = 0;
|
virtual void BindTexture(GLenum aTextureUnit) = 0;
|
||||||
|
|
||||||
virtual void UnbindTexture() = 0;
|
|
||||||
|
|
||||||
virtual gfx::IntSize GetSize() const = 0;
|
virtual gfx::IntSize GetSize() const = 0;
|
||||||
|
|
||||||
virtual GLenum GetTextureTarget() const { return LOCAL_GL_TEXTURE_2D; }
|
virtual GLenum GetTextureTarget() const { return LOCAL_GL_TEXTURE_2D; }
|
||||||
|
@ -187,11 +185,6 @@ public:
|
||||||
|
|
||||||
virtual bool IsValid() const MOZ_OVERRIDE { return !!mTexImage; }
|
virtual bool IsValid() const MOZ_OVERRIDE { return !!mTexImage; }
|
||||||
|
|
||||||
virtual void UnbindTexture() MOZ_OVERRIDE
|
|
||||||
{
|
|
||||||
mTexImage->ReleaseTexture();
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual GLenum GetWrapMode() const MOZ_OVERRIDE
|
virtual GLenum GetWrapMode() const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
return mTexImage->GetWrapMode();
|
return mTexImage->GetWrapMode();
|
||||||
|
@ -269,8 +262,6 @@ public:
|
||||||
|
|
||||||
virtual GLenum GetWrapMode() const MOZ_OVERRIDE { return mWrapMode; }
|
virtual GLenum GetWrapMode() const MOZ_OVERRIDE { return mWrapMode; }
|
||||||
|
|
||||||
virtual void UnbindTexture() MOZ_OVERRIDE {}
|
|
||||||
|
|
||||||
// SharedTextureSource doesn't own any gl texture
|
// SharedTextureSource doesn't own any gl texture
|
||||||
virtual void DeallocateDeviceData() {}
|
virtual void DeallocateDeviceData() {}
|
||||||
|
|
||||||
|
@ -406,11 +397,6 @@ public:
|
||||||
mTexture->BindTexture(aTextureUnit);
|
mTexture->BindTexture(aTextureUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UnbindTexture() MOZ_OVERRIDE
|
|
||||||
{
|
|
||||||
mTexture->ReleaseTexture();
|
|
||||||
}
|
|
||||||
|
|
||||||
gfx::IntSize GetSize() const MOZ_OVERRIDE;
|
gfx::IntSize GetSize() const MOZ_OVERRIDE;
|
||||||
|
|
||||||
GLenum GetWrapMode() const MOZ_OVERRIDE
|
GLenum GetWrapMode() const MOZ_OVERRIDE
|
||||||
|
@ -528,10 +514,6 @@ public:
|
||||||
{
|
{
|
||||||
mTexImage->BindTexture(aUnit);
|
mTexImage->BindTexture(aUnit);
|
||||||
}
|
}
|
||||||
void UnbindTexture() MOZ_OVERRIDE
|
|
||||||
{
|
|
||||||
mTexImage->ReleaseTexture();
|
|
||||||
}
|
|
||||||
virtual bool IsValid() const MOZ_OVERRIDE
|
virtual bool IsValid() const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
return !!mTexImage;
|
return !!mTexImage;
|
||||||
|
@ -650,7 +632,6 @@ public:
|
||||||
// Lock already bound us!
|
// Lock already bound us!
|
||||||
MOZ_ASSERT(activetex == LOCAL_GL_TEXTURE0);
|
MOZ_ASSERT(activetex == LOCAL_GL_TEXTURE0);
|
||||||
}
|
}
|
||||||
void UnbindTexture() MOZ_OVERRIDE {}
|
|
||||||
GLuint GetTextureID() { return mTextureHandle; }
|
GLuint GetTextureID() { return mTextureHandle; }
|
||||||
ContentType GetContentType()
|
ContentType GetContentType()
|
||||||
{
|
{
|
||||||
|
@ -731,8 +712,6 @@ public:
|
||||||
|
|
||||||
void BindTexture(GLenum activetex) MOZ_OVERRIDE;
|
void BindTexture(GLenum activetex) MOZ_OVERRIDE;
|
||||||
|
|
||||||
void UnbindTexture() MOZ_OVERRIDE {}
|
|
||||||
|
|
||||||
GLuint GetTextureID() { return mTextureHandle; }
|
GLuint GetTextureID() { return mTextureHandle; }
|
||||||
ContentType GetContentType() {
|
ContentType GetContentType() {
|
||||||
return (mFormat == gfx::FORMAT_B8G8R8A8) ?
|
return (mFormat == gfx::FORMAT_B8G8R8A8) ?
|
||||||
|
@ -792,7 +771,6 @@ public:
|
||||||
virtual bool IsValid() const MOZ_OVERRIDE { return true; }
|
virtual bool IsValid() const MOZ_OVERRIDE { return true; }
|
||||||
virtual GLenum GetWrapMode() const MOZ_OVERRIDE { return LOCAL_GL_CLAMP_TO_EDGE; }
|
virtual GLenum GetWrapMode() const MOZ_OVERRIDE { return LOCAL_GL_CLAMP_TO_EDGE; }
|
||||||
virtual void BindTexture(GLenum aTextureUnit);
|
virtual void BindTexture(GLenum aTextureUnit);
|
||||||
virtual void UnbindTexture() MOZ_OVERRIDE {}
|
|
||||||
virtual gfx::IntSize GetSize() const MOZ_OVERRIDE
|
virtual gfx::IntSize GetSize() const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
return mSize;
|
return mSize;
|
||||||
|
@ -875,7 +853,6 @@ public:
|
||||||
virtual const char* Name() { return "GrallocDeprecatedTextureHostOGL"; }
|
virtual const char* Name() { return "GrallocDeprecatedTextureHostOGL"; }
|
||||||
|
|
||||||
void BindTexture(GLenum aTextureUnit) MOZ_OVERRIDE;
|
void BindTexture(GLenum aTextureUnit) MOZ_OVERRIDE;
|
||||||
void UnbindTexture() MOZ_OVERRIDE {}
|
|
||||||
|
|
||||||
virtual TextureSourceOGL* AsSourceOGL() MOZ_OVERRIDE
|
virtual TextureSourceOGL* AsSourceOGL() MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
|
|
Загрузка…
Ссылка в новой задаче