Backing out bug 739648 for linux build failure

This commit is contained in:
Benoit Jacob 2012-05-03 16:26:04 -04:00
parent f02dd1247e
commit 37788a6a83
5 changed files with 36 additions and 67 deletions

View File

@ -739,9 +739,8 @@ already_AddRefed<TextureImage>
GLContext::CreateTextureImage(const nsIntSize& aSize,
TextureImage::ContentType aContentType,
GLenum aWrapMode,
TextureImage::Flags aFlags)
bool aUseNearestFilter)
{
bool useNearestFilter = aFlags & TextureImage::UseNearestFilter;
MakeCurrent();
GLuint texture;
@ -750,13 +749,13 @@ GLContext::CreateTextureImage(const nsIntSize& aSize,
fActiveTexture(LOCAL_GL_TEXTURE0);
fBindTexture(LOCAL_GL_TEXTURE_2D, texture);
GLint texfilter = useNearestFilter ? LOCAL_GL_NEAREST : LOCAL_GL_LINEAR;
GLint texfilter = aUseNearestFilter ? LOCAL_GL_NEAREST : LOCAL_GL_LINEAR;
fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_MIN_FILTER, texfilter);
fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_MAG_FILTER, texfilter);
fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_WRAP_S, aWrapMode);
fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_WRAP_T, aWrapMode);
return CreateBasicTextureImage(texture, aSize, aWrapMode, aContentType, this, aFlags);
return CreateBasicTextureImage(texture, aSize, aWrapMode, aContentType, this);
}
void GLContext::ApplyFilterToBoundTexture(gfxPattern::GraphicsFilter aFilter)
@ -939,13 +938,14 @@ BasicTextureImage::Resize(const nsIntSize& aSize)
TiledTextureImage::TiledTextureImage(GLContext* aGL,
nsIntSize aSize,
TextureImage::ContentType aContentType,
TextureImage::Flags aFlags)
: TextureImage(aSize, LOCAL_GL_CLAMP_TO_EDGE, aContentType, aFlags)
bool aUseNearestFilter)
: TextureImage(aSize, LOCAL_GL_CLAMP_TO_EDGE, aContentType, aUseNearestFilter)
, mCurrentImage(0)
, mInUpdate(false)
, mRows(0)
, mColumns(0)
, mGL(aGL)
, mUseNearestFilter(aUseNearestFilter)
, mTextureState(Created)
, mIterationCallback(nsnull)
{
@ -975,7 +975,7 @@ TiledTextureImage::DirectUpdate(gfxASurface* aSurf, const nsIntRegion& aRegion,
int oldCurrentImage = mCurrentImage;
BeginTileIteration();
do {
nsIntRect tileRect = GetSrcTileRect();
nsIntRect tileRect = GetTileRect();
int xPos = tileRect.x;
int yPos = tileRect.y;
@ -1187,15 +1187,6 @@ nsIntRect TiledTextureImage::GetTileRect()
return rect;
}
nsIntRect TiledTextureImage::GetSrcTileRect()
{
nsIntRect rect = GetTileRect();
unsigned int srcY = mFlags & NeedsYFlip
? mSize.height - rect.height - rect.y
: rect.y;
return nsIntRect(rect.x, srcY, rect.width, rect.height);
}
void
TiledTextureImage::BindTexture(GLenum aTextureUnit)
{
@ -1276,7 +1267,7 @@ void TiledTextureImage::Resize(const nsIntSize& aSize)
// Create a new tile.
nsRefPtr<TextureImage> teximg =
mGL->TileGenFunc(size, mContentType, mFlags);
mGL->TileGenFunc(size, mContentType, mUseNearestFilter);
if (replace)
mImages.ReplaceElementAt(i, teximg.forget());
else

View File

@ -127,12 +127,6 @@ public:
Valid // Texture fully ready to use.
};
enum Flags {
NoFlags = 0x0,
UseNearestFilter = 0x1,
NeedsYFlip = 0x2
};
typedef gfxASurface::gfxContentType ContentType;
virtual ~TextureImage() {}
@ -324,24 +318,18 @@ protected:
*/
TextureImage(const nsIntSize& aSize,
GLenum aWrapMode, ContentType aContentType,
Flags aFlags = NoFlags)
bool aIsRGB = false)
: mSize(aSize)
, mWrapMode(aWrapMode)
, mContentType(aContentType)
, mFilter(gfxPattern::FILTER_GOOD)
, mFlags(aFlags)
{}
virtual nsIntRect GetSrcTileRect() {
return nsIntRect(nsIntPoint(0,0), mSize);
};
nsIntSize mSize;
GLenum mWrapMode;
ContentType mContentType;
ShaderProgramType mShaderType;
gfxPattern::GraphicsFilter mFilter;
Flags mFlags;
};
/**
@ -364,9 +352,8 @@ public:
const nsIntSize& aSize,
GLenum aWrapMode,
ContentType aContentType,
GLContext* aContext,
TextureImage::Flags aFlags = TextureImage::NoFlags)
: TextureImage(aSize, aWrapMode, aContentType, aFlags)
GLContext* aContext)
: TextureImage(aSize, aWrapMode, aContentType)
, mTexture(aTexture)
, mTextureState(Created)
, mGLContext(aContext)
@ -421,7 +408,7 @@ class TiledTextureImage
{
public:
TiledTextureImage(GLContext* aGL, nsIntSize aSize,
TextureImage::ContentType, TextureImage::Flags aFlags = TextureImage::NoFlags);
TextureImage::ContentType, bool aUseNearestFilter = false);
~TiledTextureImage();
void DumpDiv();
virtual gfxASurface* BeginUpdate(nsIntRegion& aRegion);
@ -441,10 +428,7 @@ public:
virtual bool InUpdate() const { return mInUpdate; };
virtual void BindTexture(GLenum);
virtual void ApplyFilter();
protected:
virtual nsIntRect GetSrcTileRect();
unsigned int mCurrentImage;
TileIterationCallback mIterationCallback;
void* mIterationCallbackData;
@ -1290,8 +1274,7 @@ public:
* |aContentType|. The TextureImage's texture is configured to
* use |aWrapMode| (usually GL_CLAMP_TO_EDGE or GL_REPEAT) and by
* default, GL_LINEAR filtering. Specify
* |aFlags=UseNearestFilter| for GL_NEAREST filtering. Specify
* |aFlags=NeedsYFlip| if the image is flipped. Return
* |aUseNearestFilter=true| for GL_NEAREST filtering. Return
* NULL if creating the TextureImage fails.
*
* The returned TextureImage may only be used with this GLContext.
@ -1303,7 +1286,7 @@ public:
CreateTextureImage(const nsIntSize& aSize,
TextureImage::ContentType aContentType,
GLenum aWrapMode,
TextureImage::Flags aFlags = TextureImage::NoFlags);
bool aUseNearestFilter=false);
/**
* In EGL we want to use Tiled Texture Images, which we return
@ -1315,7 +1298,7 @@ public:
virtual already_AddRefed<TextureImage>
TileGenFunc(const nsIntSize& aSize,
TextureImage::ContentType aContentType,
TextureImage::Flags aFlags = TextureImage::NoFlags)
bool aUseNearestFilter = false)
{
return nsnull;
};
@ -1745,11 +1728,10 @@ protected:
const nsIntSize& aSize,
GLenum aWrapMode,
TextureImage::ContentType aContentType,
GLContext* aContext,
TextureImage::Flags aFlags = TextureImage::NoFlags)
GLContext* aContext)
{
nsRefPtr<BasicTextureImage> teximage(
new BasicTextureImage(aTexture, aSize, aWrapMode, aContentType, aContext, aFlags));
new BasicTextureImage(aTexture, aSize, aWrapMode, aContentType, aContext));
return teximage.forget();
}

View File

@ -525,13 +525,13 @@ public:
CreateTextureImage(const nsIntSize& aSize,
TextureImage::ContentType aContentType,
GLenum aWrapMode,
TextureImage::Flags aFlags = TextureImage::NoFlags);
bool aUseNearestFilter=false);
// a function to generate Tiles for Tiled Texture Image
virtual already_AddRefed<TextureImage>
TileGenFunc(const nsIntSize& aSize,
TextureImage::ContentType aContentType,
TextureImage::Flags aFlags = TextureImage::NoFlags);
bool aUseNearestFilter = false);
// hold a reference to the given surface
// for the lifetime of this context.
void HoldSurface(gfxASurface *aSurf) {
@ -800,9 +800,8 @@ public:
const nsIntSize& aSize,
GLenum aWrapMode,
ContentType aContentType,
GLContext* aContext,
TextureImage::Flags aFlags = TextureImage::NoFlags)
: TextureImage(aSize, aWrapMode, aContentType, aFlags)
GLContext* aContext)
: TextureImage(aSize, aWrapMode, aContentType)
, mGLContext(aContext)
, mUpdateFormat(gfxASurface::ImageFormatUnknown)
, mSurface(nsnull)
@ -1295,16 +1294,16 @@ already_AddRefed<TextureImage>
GLContextEGL::CreateTextureImage(const nsIntSize& aSize,
TextureImage::ContentType aContentType,
GLenum aWrapMode,
TextureImage::Flags aFlags)
bool aUseNearestFilter)
{
nsRefPtr<TextureImage> t = new gl::TiledTextureImage(this, aSize, aContentType, aFlags);
nsRefPtr<TextureImage> t = new gl::TiledTextureImage(this, aSize, aContentType, aUseNearestFilter);
return t.forget();
}
already_AddRefed<TextureImage>
GLContextEGL::TileGenFunc(const nsIntSize& aSize,
TextureImage::ContentType aContentType,
TextureImage::Flags aFlags)
bool aUseNearestFilter)
{
MakeCurrent();
@ -1315,9 +1314,9 @@ GLContextEGL::TileGenFunc(const nsIntSize& aSize,
fBindTexture(LOCAL_GL_TEXTURE_2D, texture);
nsRefPtr<TextureImageEGL> teximage =
new TextureImageEGL(texture, aSize, LOCAL_GL_CLAMP_TO_EDGE, aContentType, this, aFlags);
new TextureImageEGL(texture, aSize, LOCAL_GL_CLAMP_TO_EDGE, aContentType, this);
GLint texfilter = aFlags & TextureImage::UseNearestFilter ? LOCAL_GL_NEAREST : LOCAL_GL_LINEAR;
GLint texfilter = aUseNearestFilter ? LOCAL_GL_NEAREST : LOCAL_GL_LINEAR;
fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_MIN_FILTER, texfilter);
fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_MAG_FILTER, texfilter);
fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_WRAP_S, LOCAL_GL_CLAMP_TO_EDGE);

View File

@ -859,7 +859,7 @@ TRY_AGAIN_NO_SHARING:
CreateTextureImage(const nsIntSize& aSize,
TextureImage::ContentType aContentType,
GLenum aWrapMode,
TextureImage::Flags aFlags = TextureImage::NoFlags);
bool aUseNearestFilter = false);
private:
friend class GLContextProviderGLX;
@ -896,7 +896,7 @@ class TextureImageGLX : public TextureImage
GLContextGLX::CreateTextureImage(const nsIntSize&,
ContentType,
GLenum,
TextureImage::Flags);
bool);
public:
virtual ~TextureImageGLX()
@ -960,9 +960,8 @@ private:
ContentType aContentType,
GLContext* aContext,
gfxASurface* aSurface,
GLXPixmap aPixmap,
TextureImage::Flags aFlags = TextureImage::NoFlags)
: TextureImage(aSize, aWrapMode, aContentType, aFlags)
GLXPixmap aPixmap)
: TextureImage(aSize, aWrapMode, aContentType)
, mGLContext(aContext)
, mUpdateSurface(aSurface)
, mPixmap(aPixmap)
@ -992,13 +991,13 @@ already_AddRefed<TextureImage>
GLContextGLX::CreateTextureImage(const nsIntSize& aSize,
TextureImage::ContentType aContentType,
GLenum aWrapMode,
TextureImage::Flags aFlags)
bool aUseNearestFilter)
{
if (!TextureImageSupportsGetBackingSurface()) {
return GLContext::CreateTextureImage(aSize,
aContentType,
aWrapMode,
aFlags & UseNearestFilter);
aUseNearestFilter);
}
Display *display = DefaultXDisplay();
@ -1033,9 +1032,9 @@ GLContextGLX::CreateTextureImage(const nsIntSize& aSize,
fBindTexture(LOCAL_GL_TEXTURE_2D, texture);
nsRefPtr<TextureImageGLX> teximage =
new TextureImageGLX(texture, aSize, aWrapMode, aContentType, this, surface, pixmap, aFlags);
new TextureImageGLX(texture, aSize, aWrapMode, aContentType, this, surface, pixmap);
GLint texfilter = aFlags & UseNearestFilter ? LOCAL_GL_NEAREST : LOCAL_GL_LINEAR;
GLint texfilter = aUseNearestFilter ? LOCAL_GL_NEAREST : LOCAL_GL_LINEAR;
fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_MIN_FILTER, texfilter);
fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_MAG_FILTER, texfilter);
fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_WRAP_S, aWrapMode);

View File

@ -339,12 +339,10 @@ ShadowCanvasLayerOGL::Init(const CanvasSurface& aNewFront, bool needYFlip)
{
nsRefPtr<gfxASurface> surf = ShadowLayerForwarder::OpenDescriptor(aNewFront);
mNeedsYFlip = needYFlip;
mTexImage = gl()->CreateTextureImage(surf->GetSize(),
surf->GetContentType(),
LOCAL_GL_CLAMP_TO_EDGE,
mNeedsYFlip ? TextureImage::NeedsYFlip : TextureImage::NoFlags);
LOCAL_GL_CLAMP_TO_EDGE);
mNeedsYFlip = needYFlip;
}
void