зеркало из 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 "DecomposeIntoNoRepeatTriangles.h"
|
||||
#include "GLContext.h"
|
||||
#include "ScopedGLHelpers.h"
|
||||
#include "nsRect.h"
|
||||
#include "gfx2DGlue.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);
|
||||
|
||||
|
|
|
@ -1189,24 +1189,6 @@ GLContext::ListHasExtension(const GLubyte *extensions, const char *extension)
|
|||
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
|
||||
GLContext::DetermineCaps()
|
||||
{
|
||||
|
|
|
@ -2482,17 +2482,6 @@ public:
|
|||
*/
|
||||
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
|
||||
void GuaranteeResolve();
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ GLXLibrary::SelectLibrary(const ContextFlags& aFlags)
|
|||
}
|
||||
|
||||
// Check that we have at least version aMajor.aMinor .
|
||||
bool
|
||||
bool
|
||||
GLXLibrary::GLXVersionCheck(int aMajor, int aMinor)
|
||||
{
|
||||
return aMajor < mGLXMajorVersion ||
|
||||
|
@ -244,7 +244,7 @@ GLXLibrary::EnsureInitialized(LibType libType)
|
|||
}
|
||||
|
||||
if (HasExtension(extensionsStr, "GLX_EXT_texture_from_pixmap") &&
|
||||
GLLibraryLoader::LoadSymbols(mOGLLibrary, symbols_texturefrompixmap,
|
||||
GLLibraryLoader::LoadSymbols(mOGLLibrary, symbols_texturefrompixmap,
|
||||
(GLLibraryLoader::PlatformLookupFunction)&xGetProcAddress))
|
||||
{
|
||||
#ifdef MOZ_WIDGET_GTK
|
||||
|
@ -278,7 +278,7 @@ GLXLibrary::SupportsTextureFromPixmap(gfxASurface* aSurface)
|
|||
if (!EnsureInitialized(mLibType)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if (aSurface->GetType() != gfxSurfaceTypeXlib || !mUseTextureFromPixmap) {
|
||||
return false;
|
||||
}
|
||||
|
@ -286,7 +286,7 @@ GLXLibrary::SupportsTextureFromPixmap(gfxASurface* aSurface)
|
|||
return true;
|
||||
}
|
||||
|
||||
GLXPixmap
|
||||
GLXPixmap
|
||||
GLXLibrary::CreatePixmap(gfxASurface* aSurface)
|
||||
{
|
||||
if (!SupportsTextureFromPixmap(aSurface)) {
|
||||
|
@ -320,7 +320,7 @@ GLXLibrary::CreatePixmap(gfxASurface* aSurface)
|
|||
attribs,
|
||||
&numConfigs));
|
||||
|
||||
// Find an fbconfig that matches the pixel format used on the Pixmap.
|
||||
// Find an fbconfig that matches the pixel format used on the Pixmap.
|
||||
int matchIndex = -1;
|
||||
unsigned long redMask =
|
||||
static_cast<unsigned long>(direct.redMask) << direct.red;
|
||||
|
@ -436,7 +436,7 @@ GLXLibrary::DestroyPixmap(GLXPixmap aPixmap)
|
|||
|
||||
void
|
||||
GLXLibrary::BindTexImage(GLXPixmap aPixmap)
|
||||
{
|
||||
{
|
||||
if (!mUseTextureFromPixmap) {
|
||||
return;
|
||||
}
|
||||
|
@ -508,7 +508,7 @@ GLXLibrary::AfterGLXCall()
|
|||
#define BEFORE_GLX_CALL do { \
|
||||
sGLXLibrary[gCurrLib].BeforeGLXCall(); \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define AFTER_GLX_CALL do { \
|
||||
sGLXLibrary[gCurrLib].AfterGLXCall(); \
|
||||
} while (0)
|
||||
|
@ -519,8 +519,8 @@ GLXLibrary::AfterGLXCall()
|
|||
#define AFTER_GLX_CALL do { } while(0)
|
||||
|
||||
#endif
|
||||
|
||||
void
|
||||
|
||||
void
|
||||
GLXLibrary::xDestroyContext(Display* display, GLXContext context)
|
||||
{
|
||||
BEFORE_GLX_CALL;
|
||||
|
@ -528,9 +528,9 @@ GLXLibrary::xDestroyContext(Display* display, GLXContext context)
|
|||
AFTER_GLX_CALL;
|
||||
}
|
||||
|
||||
Bool
|
||||
GLXLibrary::xMakeCurrent(Display* display,
|
||||
GLXDrawable drawable,
|
||||
Bool
|
||||
GLXLibrary::xMakeCurrent(Display* display,
|
||||
GLXDrawable drawable,
|
||||
GLXContext context)
|
||||
{
|
||||
BEFORE_GLX_CALL;
|
||||
|
@ -539,7 +539,7 @@ GLXLibrary::xMakeCurrent(Display* display,
|
|||
return result;
|
||||
}
|
||||
|
||||
GLXContext
|
||||
GLXContext
|
||||
GLXLibrary::xGetCurrentContext()
|
||||
{
|
||||
BEFORE_GLX_CALL;
|
||||
|
@ -548,7 +548,7 @@ GLXLibrary::xGetCurrentContext()
|
|||
return result;
|
||||
}
|
||||
|
||||
/* static */ void*
|
||||
/* static */ void*
|
||||
GLXLibrary::xGetProcAddress(const char *procName)
|
||||
{
|
||||
BEFORE_GLX_CALL;
|
||||
|
@ -558,9 +558,9 @@ GLXLibrary::xGetProcAddress(const char *procName)
|
|||
}
|
||||
|
||||
GLXFBConfig*
|
||||
GLXLibrary::xChooseFBConfig(Display* display,
|
||||
int screen,
|
||||
const int *attrib_list,
|
||||
GLXLibrary::xChooseFBConfig(Display* display,
|
||||
int screen,
|
||||
const int *attrib_list,
|
||||
int *nelements)
|
||||
{
|
||||
BEFORE_GLX_CALL;
|
||||
|
@ -569,9 +569,9 @@ GLXLibrary::xChooseFBConfig(Display* display,
|
|||
return result;
|
||||
}
|
||||
|
||||
GLXFBConfig*
|
||||
GLXLibrary::xGetFBConfigs(Display* display,
|
||||
int screen,
|
||||
GLXFBConfig*
|
||||
GLXLibrary::xGetFBConfigs(Display* display,
|
||||
int screen,
|
||||
int *nelements)
|
||||
{
|
||||
BEFORE_GLX_CALL;
|
||||
|
@ -579,16 +579,16 @@ GLXLibrary::xGetFBConfigs(Display* display,
|
|||
AFTER_GLX_CALL;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
GLXContext
|
||||
GLXLibrary::xCreateNewContext(Display* display,
|
||||
GLXFBConfig config,
|
||||
int render_type,
|
||||
GLXContext share_list,
|
||||
GLXLibrary::xCreateNewContext(Display* display,
|
||||
GLXFBConfig config,
|
||||
int render_type,
|
||||
GLXContext share_list,
|
||||
Bool direct)
|
||||
{
|
||||
BEFORE_GLX_CALL;
|
||||
GLXContext result = xCreateNewContextInternal(display, config,
|
||||
GLXContext result = xCreateNewContextInternal(display, config,
|
||||
render_type,
|
||||
share_list, direct);
|
||||
AFTER_GLX_CALL;
|
||||
|
@ -647,7 +647,7 @@ GLXLibrary::xQueryServerString(Display *display,
|
|||
}
|
||||
|
||||
GLXPixmap
|
||||
GLXLibrary::xCreatePixmap(Display *display,
|
||||
GLXLibrary::xCreatePixmap(Display *display,
|
||||
GLXFBConfig config,
|
||||
Pixmap pixmap,
|
||||
const int *attrib_list)
|
||||
|
@ -710,7 +710,7 @@ GLXLibrary::xReleaseTexImage(Display *display,
|
|||
AFTER_GLX_CALL;
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
GLXLibrary::xWaitGL()
|
||||
{
|
||||
BEFORE_GLX_CALL;
|
||||
|
@ -727,16 +727,16 @@ GLXLibrary::xWaitX()
|
|||
}
|
||||
|
||||
GLXContext
|
||||
GLXLibrary::xCreateContextAttribs(Display* display,
|
||||
GLXFBConfig config,
|
||||
GLXContext share_list,
|
||||
GLXLibrary::xCreateContextAttribs(Display* display,
|
||||
GLXFBConfig config,
|
||||
GLXContext share_list,
|
||||
Bool direct,
|
||||
const int* attrib_list)
|
||||
{
|
||||
BEFORE_GLX_CALL;
|
||||
GLXContext result = xCreateContextAttribsInternal(display,
|
||||
config,
|
||||
share_list,
|
||||
GLXContext result = xCreateContextAttribsInternal(display,
|
||||
config,
|
||||
share_list,
|
||||
direct,
|
||||
attrib_list);
|
||||
AFTER_GLX_CALL;
|
||||
|
@ -905,7 +905,7 @@ TRY_AGAIN_NO_SHARING:
|
|||
switch(aType) {
|
||||
case NativeGLContext:
|
||||
return mContext;
|
||||
|
||||
|
||||
case NativeThebesSurface:
|
||||
return mPixmap;
|
||||
|
||||
|
@ -1012,13 +1012,13 @@ GLContextProviderGLX::CreateForWindow(nsIWidget *aWidget)
|
|||
// performance might be suboptimal. But using the existing visual
|
||||
// is a relatively safe intermediate step.
|
||||
|
||||
Display *display = (Display*)aWidget->GetNativeData(NS_NATIVE_DISPLAY);
|
||||
Display *display = (Display*)aWidget->GetNativeData(NS_NATIVE_DISPLAY);
|
||||
int xscreen = DefaultScreen(display);
|
||||
Window window = GET_NATIVE_WINDOW(aWidget);
|
||||
|
||||
int numConfigs;
|
||||
ScopedXFree<GLXFBConfig> cfgs;
|
||||
if (sDefGLXLib.IsATI() ||
|
||||
if (sDefGLXLib.IsATI() ||
|
||||
!sDefGLXLib.GLXVersionCheck(1, 3)) {
|
||||
const int attribs[] = {
|
||||
LOCAL_GLX_DOUBLEBUFFER, False,
|
||||
|
|
|
@ -205,13 +205,6 @@ BasicTextureImage::BindTexture(GLenum aTextureUnit)
|
|||
mGLContext->fActiveTexture(LOCAL_GL_TEXTURE0);
|
||||
}
|
||||
|
||||
void
|
||||
BasicTextureImage::ApplyFilter()
|
||||
{
|
||||
mGLContext->ApplyFilterToBoundTexture(mFilter);
|
||||
}
|
||||
|
||||
|
||||
already_AddRefed<gfxASurface>
|
||||
BasicTextureImage::GetSurfaceForUpdate(const gfxIntSize& aSize, ImageFormat aFmt)
|
||||
{
|
||||
|
@ -637,12 +630,6 @@ TiledTextureImage::BindTexture(GLenum 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
|
||||
* 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();
|
||||
}
|
||||
|
||||
TextureImage::ScopedBindTexture::ScopedBindTexture(TextureImage* aTexture,
|
||||
GLenum aTextureUnit)
|
||||
: mTexture(aTexture)
|
||||
{
|
||||
if (mTexture) {
|
||||
MOZ_ASSERT(aTextureUnit >= LOCAL_GL_TEXTURE0);
|
||||
mTexture->BindTexture(aTextureUnit);
|
||||
}
|
||||
}
|
||||
|
||||
already_AddRefed<TextureImage>
|
||||
CreateBasicTextureImage(GLContext* aGL,
|
||||
const nsIntSize& aSize,
|
||||
|
|
|
@ -185,41 +185,6 @@ public:
|
|||
const gfx::IntPoint* aSrcOffset = nullptr);
|
||||
|
||||
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
|
||||
|
@ -247,12 +212,6 @@ public:
|
|||
|
||||
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:
|
||||
friend class GLContext;
|
||||
|
||||
|
@ -345,9 +304,7 @@ public:
|
|||
|
||||
virtual void Resize(const nsIntSize& aSize);
|
||||
|
||||
virtual void ApplyFilter();
|
||||
protected:
|
||||
|
||||
GLuint mTexture;
|
||||
TextureState mTextureState;
|
||||
nsRefPtr<GLContext> mGLContext;
|
||||
|
@ -390,7 +347,6 @@ public:
|
|||
virtual bool DirectUpdate(gfxASurface* aSurf, const nsIntRegion& aRegion, const nsIntPoint& aFrom = nsIntPoint(0,0));
|
||||
virtual bool InUpdate() const { return mInUpdate; }
|
||||
virtual void BindTexture(GLenum);
|
||||
virtual void ApplyFilter();
|
||||
|
||||
protected:
|
||||
virtual gfx::IntRect GetSrcTileRect();
|
||||
|
|
|
@ -311,12 +311,6 @@ TextureImageEGL::DestroyEGLSurface(void)
|
|||
mSurface = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
TextureImageEGL::ApplyFilter()
|
||||
{
|
||||
mGLContext->ApplyFilterToBoundTexture(mFilter);
|
||||
}
|
||||
|
||||
already_AddRefed<TextureImage>
|
||||
CreateTextureImageEGL(GLContext *gl,
|
||||
const nsIntSize& aSize,
|
||||
|
@ -357,4 +351,4 @@ TileGenFuncEGL(GLContext *gl,
|
|||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,8 +75,6 @@ protected:
|
|||
TextureState mTextureState;
|
||||
|
||||
bool mBound;
|
||||
|
||||
virtual void ApplyFilter();
|
||||
};
|
||||
|
||||
already_AddRefed<TextureImage>
|
||||
|
@ -97,4 +95,4 @@ TileGenFuncEGL(GLContext *gl,
|
|||
}
|
||||
}
|
||||
|
||||
#endif // TEXTUREIMAGEEGL_H_
|
||||
#endif // TEXTUREIMAGEEGL_H_
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include "nsServiceManagerUtils.h" // for do_GetService
|
||||
#include "nsString.h" // for nsString, nsAutoCString, etc
|
||||
#include "DecomposeIntoNoRepeatTriangles.h"
|
||||
#include "ScopedGLHelpers.h"
|
||||
|
||||
#if MOZ_ANDROID_OMTC
|
||||
#include "TexturePoolOGL.h"
|
||||
|
@ -978,28 +979,57 @@ CompositorOGL::GetProgramTypeForEffect(Effect *aEffect) const
|
|||
}
|
||||
|
||||
struct MOZ_STACK_CLASS AutoBindTexture
|
||||
: public ScopedGLWrapper<AutoBindTexture>
|
||||
{
|
||||
AutoBindTexture() : mTexture(nullptr) {}
|
||||
AutoBindTexture(TextureSourceOGL* aTexture, GLenum aTextureUnit)
|
||||
: mTexture(nullptr) { Bind(aTexture, aTextureUnit); }
|
||||
~AutoBindTexture()
|
||||
friend struct ScopedGLWrapper<AutoBindTexture>;
|
||||
|
||||
protected:
|
||||
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) {
|
||||
mTexture->UnbindTexture();
|
||||
}
|
||||
Bind(aTexture, aTexUnit);
|
||||
}
|
||||
|
||||
void Bind(TextureSourceOGL* aTexture, GLenum aTextureUnit)
|
||||
void Bind(TextureSourceOGL* aTexture,
|
||||
GLenum aTexUnit = LOCAL_GL_TEXTURE0)
|
||||
{
|
||||
MOZ_ASSERT(!mTexture);
|
||||
mTexture = aTexture;
|
||||
mTexture->BindTexture(aTextureUnit);
|
||||
if (!aTexture)
|
||||
return;
|
||||
|
||||
MOZ_ASSERT(mOldTexId == (GLuint) -1);
|
||||
mTexUnit = aTexUnit;
|
||||
|
||||
ScopedBindTextureUnit savedTexUnit(mGL, aTexUnit);
|
||||
|
||||
mGL->GetUIntegerv(LOCAL_GL_TEXTURE_BINDING_2D, &mOldTexId);
|
||||
aTexture->BindTexture(mTexUnit);
|
||||
}
|
||||
|
||||
private:
|
||||
TextureSourceOGL* mTexture;
|
||||
protected:
|
||||
void UnwrapImpl()
|
||||
{
|
||||
if (mOldTexId == (GLuint) -1)
|
||||
return;
|
||||
|
||||
ScopedBindTextureUnit savedTexUnit(mGL, mTexUnit);
|
||||
mGL->fBindTexture(LOCAL_GL_TEXTURE_2D, mOldTexId);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void
|
||||
CompositorOGL::DrawLines(const std::vector<gfx::Point>& aLines, const gfx::Rect& aClipRect,
|
||||
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
|
||||
CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
||||
const Rect& aClipRect,
|
||||
|
@ -1112,7 +1156,7 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
|||
|
||||
program->SetRenderColor(color);
|
||||
|
||||
AutoBindTexture bindMask;
|
||||
AutoBindTexture bindMask(mGLContext);
|
||||
if (maskType != MaskNone) {
|
||||
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE0);
|
||||
program->SetMaskTextureUnit(0);
|
||||
|
@ -1137,7 +1181,7 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
|||
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();
|
||||
program->SetTextureTransform(textureTransform);
|
||||
|
@ -1155,13 +1199,13 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
|||
filter = GraphicsFilter::FILTER_NEAREST;
|
||||
}
|
||||
#endif
|
||||
mGLContext->ApplyFilterToBoundTexture(source->AsSourceOGL()->GetTextureTarget(),
|
||||
filter);
|
||||
ApplyFilterToBoundTexture(mGLContext, filter,
|
||||
source->AsSourceOGL()->GetTextureTarget());
|
||||
|
||||
program->SetTextureUnit(0);
|
||||
program->SetLayerOpacity(aOpacity);
|
||||
|
||||
AutoBindTexture bindMask;
|
||||
AutoBindTexture bindMask(mGLContext);
|
||||
if (maskType != MaskNone) {
|
||||
mGLContext->fActiveTexture(LOCAL_GL_TEXTURE1);
|
||||
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE1);
|
||||
|
@ -1193,18 +1237,18 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
|||
|
||||
GraphicsFilter filter = ThebesFilter(effectYCbCr->mFilter);
|
||||
|
||||
AutoBindTexture bindY(sourceY, LOCAL_GL_TEXTURE0);
|
||||
mGLContext->ApplyFilterToBoundTexture(filter);
|
||||
AutoBindTexture bindCb(sourceCb, LOCAL_GL_TEXTURE1);
|
||||
mGLContext->ApplyFilterToBoundTexture(filter);
|
||||
AutoBindTexture bindCr(sourceCr, LOCAL_GL_TEXTURE2);
|
||||
mGLContext->ApplyFilterToBoundTexture(filter);
|
||||
AutoBindTexture bindY(mGLContext, sourceY, LOCAL_GL_TEXTURE0);
|
||||
ApplyFilterToBoundTexture(mGLContext, filter);
|
||||
AutoBindTexture bindCb(mGLContext, sourceCb, LOCAL_GL_TEXTURE1);
|
||||
ApplyFilterToBoundTexture(mGLContext, filter);
|
||||
AutoBindTexture bindCr(mGLContext, sourceCr, LOCAL_GL_TEXTURE2);
|
||||
ApplyFilterToBoundTexture(mGLContext, filter);
|
||||
|
||||
program->SetYCbCrTextureUnits(Y, Cb, Cr);
|
||||
program->SetLayerOpacity(aOpacity);
|
||||
program->SetTextureTransform(gfx3DMatrix());
|
||||
|
||||
AutoBindTexture bindMask;
|
||||
AutoBindTexture bindMask(mGLContext);
|
||||
if (maskType != MaskNone) {
|
||||
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE3);
|
||||
program->SetMaskTextureUnit(3);
|
||||
|
@ -1228,7 +1272,7 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
|||
program->SetLayerOpacity(aOpacity);
|
||||
program->SetTextureTransform(gfx3DMatrix());
|
||||
|
||||
AutoBindTexture bindMask;
|
||||
AutoBindTexture bindMask(mGLContext);
|
||||
if (maskType != MaskNone) {
|
||||
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE1);
|
||||
program->SetMaskTextureUnit(1);
|
||||
|
@ -1277,8 +1321,8 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
|||
LOCAL_GL_ONE, LOCAL_GL_ONE);
|
||||
}
|
||||
|
||||
AutoBindTexture bindSourceOnBlack(sourceOnBlack, LOCAL_GL_TEXTURE0);
|
||||
AutoBindTexture bindSourceOnWhite(sourceOnWhite, LOCAL_GL_TEXTURE1);
|
||||
AutoBindTexture bindSourceOnBlack(mGLContext, sourceOnBlack, LOCAL_GL_TEXTURE0);
|
||||
AutoBindTexture bindSourceOnWhite(mGLContext, sourceOnWhite, LOCAL_GL_TEXTURE1);
|
||||
|
||||
program->Activate();
|
||||
program->SetBlackTextureUnit(0);
|
||||
|
@ -1288,7 +1332,7 @@ CompositorOGL::DrawQuadInternal(const Rect& aRect,
|
|||
program->SetTextureTransform(gfx3DMatrix());
|
||||
program->SetRenderOffset(offset.x, offset.y);
|
||||
program->SetLayerQuadRect(aRect);
|
||||
AutoBindTexture bindMask;
|
||||
AutoBindTexture bindMask(mGLContext);
|
||||
if (maskType != MaskNone) {
|
||||
bindMask.Bind(sourceMask, LOCAL_GL_TEXTURE2);
|
||||
program->SetMaskTextureUnit(2);
|
||||
|
|
|
@ -32,8 +32,6 @@ public:
|
|||
|
||||
virtual void BindTexture(GLenum aTextureUnit) MOZ_OVERRIDE;
|
||||
|
||||
virtual void UnbindTexture() MOZ_OVERRIDE {}
|
||||
|
||||
virtual gfx::IntSize GetSize() const MOZ_OVERRIDE;
|
||||
|
||||
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 void UnbindTexture() MOZ_OVERRIDE {}
|
||||
|
||||
// MacIOSurfaceTextureSourceOGL doesn't own any gl texture
|
||||
virtual void DeallocateDeviceData() {}
|
||||
|
||||
|
@ -104,4 +102,4 @@ protected:
|
|||
}
|
||||
}
|
||||
|
||||
#endif // MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_H
|
||||
#endif // MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_H
|
||||
|
|
|
@ -127,8 +127,6 @@ public:
|
|||
|
||||
virtual void BindTexture(GLenum aTextureUnit) = 0;
|
||||
|
||||
virtual void UnbindTexture() = 0;
|
||||
|
||||
virtual gfx::IntSize GetSize() const = 0;
|
||||
|
||||
virtual GLenum GetTextureTarget() const { return LOCAL_GL_TEXTURE_2D; }
|
||||
|
@ -187,11 +185,6 @@ public:
|
|||
|
||||
virtual bool IsValid() const MOZ_OVERRIDE { return !!mTexImage; }
|
||||
|
||||
virtual void UnbindTexture() MOZ_OVERRIDE
|
||||
{
|
||||
mTexImage->ReleaseTexture();
|
||||
}
|
||||
|
||||
virtual GLenum GetWrapMode() const MOZ_OVERRIDE
|
||||
{
|
||||
return mTexImage->GetWrapMode();
|
||||
|
@ -269,8 +262,6 @@ public:
|
|||
|
||||
virtual GLenum GetWrapMode() const MOZ_OVERRIDE { return mWrapMode; }
|
||||
|
||||
virtual void UnbindTexture() MOZ_OVERRIDE {}
|
||||
|
||||
// SharedTextureSource doesn't own any gl texture
|
||||
virtual void DeallocateDeviceData() {}
|
||||
|
||||
|
@ -406,11 +397,6 @@ public:
|
|||
mTexture->BindTexture(aTextureUnit);
|
||||
}
|
||||
|
||||
void UnbindTexture() MOZ_OVERRIDE
|
||||
{
|
||||
mTexture->ReleaseTexture();
|
||||
}
|
||||
|
||||
gfx::IntSize GetSize() const MOZ_OVERRIDE;
|
||||
|
||||
GLenum GetWrapMode() const MOZ_OVERRIDE
|
||||
|
@ -528,10 +514,6 @@ public:
|
|||
{
|
||||
mTexImage->BindTexture(aUnit);
|
||||
}
|
||||
void UnbindTexture() MOZ_OVERRIDE
|
||||
{
|
||||
mTexImage->ReleaseTexture();
|
||||
}
|
||||
virtual bool IsValid() const MOZ_OVERRIDE
|
||||
{
|
||||
return !!mTexImage;
|
||||
|
@ -650,7 +632,6 @@ public:
|
|||
// Lock already bound us!
|
||||
MOZ_ASSERT(activetex == LOCAL_GL_TEXTURE0);
|
||||
}
|
||||
void UnbindTexture() MOZ_OVERRIDE {}
|
||||
GLuint GetTextureID() { return mTextureHandle; }
|
||||
ContentType GetContentType()
|
||||
{
|
||||
|
@ -731,8 +712,6 @@ public:
|
|||
|
||||
void BindTexture(GLenum activetex) MOZ_OVERRIDE;
|
||||
|
||||
void UnbindTexture() MOZ_OVERRIDE {}
|
||||
|
||||
GLuint GetTextureID() { return mTextureHandle; }
|
||||
ContentType GetContentType() {
|
||||
return (mFormat == gfx::FORMAT_B8G8R8A8) ?
|
||||
|
@ -792,7 +771,6 @@ public:
|
|||
virtual bool IsValid() const MOZ_OVERRIDE { return true; }
|
||||
virtual GLenum GetWrapMode() const MOZ_OVERRIDE { return LOCAL_GL_CLAMP_TO_EDGE; }
|
||||
virtual void BindTexture(GLenum aTextureUnit);
|
||||
virtual void UnbindTexture() MOZ_OVERRIDE {}
|
||||
virtual gfx::IntSize GetSize() const MOZ_OVERRIDE
|
||||
{
|
||||
return mSize;
|
||||
|
@ -875,7 +853,6 @@ public:
|
|||
virtual const char* Name() { return "GrallocDeprecatedTextureHostOGL"; }
|
||||
|
||||
void BindTexture(GLenum aTextureUnit) MOZ_OVERRIDE;
|
||||
void UnbindTexture() MOZ_OVERRIDE {}
|
||||
|
||||
virtual TextureSourceOGL* AsSourceOGL() MOZ_OVERRIDE
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче