gecko/gfx/gl/SharedSurfaceIO.h
Wes Kocher 8f849d9d65 Backed out 6 changesets (bug 877115) for mochitest-1 and reftest orange on this CLOSED TREE
Backed out changeset 65ad9d8860d6 (bug 877115)
Backed out changeset bf8095c168fb (bug 877115)
Backed out changeset 290ad5863615 (bug 877115)
Backed out changeset 4488ec28910e (bug 877115)
Backed out changeset 45f8859c6fd6 (bug 877115)
Backed out changeset 111cc426fa9e (bug 877115)
2013-12-16 16:33:07 -08:00

75 lines
2.0 KiB
C++

/* -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40; -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef SHARED_SURFACEIO_H_
#define SHARED_SURFACEIO_H_
#include "SharedSurfaceGL.h"
#include "mozilla/RefPtr.h"
class MacIOSurface;
namespace mozilla {
namespace gl {
class SharedSurface_IOSurface : public SharedSurface_GL
{
public:
static SharedSurface_IOSurface* Create(MacIOSurface* surface, GLContext *gl, bool hasAlpha);
~SharedSurface_IOSurface();
virtual void LockProdImpl() { }
virtual void UnlockProdImpl() { }
virtual void Fence();
virtual bool WaitSync() { return true; }
virtual bool ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
GLenum format, GLenum type, GLvoid *pixels) MOZ_OVERRIDE;
virtual GLuint Texture() const
{
return mTexture;
}
virtual GLenum TextureTarget() const {
return LOCAL_GL_TEXTURE_RECTANGLE_ARB;
}
static SharedSurface_IOSurface* Cast(SharedSurface *surf)
{
MOZ_ASSERT(surf->Type() == SharedSurfaceType::IOSurface);
return static_cast<SharedSurface_IOSurface*>(surf);
}
MacIOSurface* GetIOSurface() { return mSurface; }
private:
SharedSurface_IOSurface(MacIOSurface* surface, GLContext* gl, const gfxIntSize& size, bool hasAlpha);
RefPtr<MacIOSurface> mSurface;
nsRefPtr<gfxImageSurface> mImageSurface;
GLuint mTexture;
};
class SurfaceFactory_IOSurface : public SurfaceFactory_GL
{
public:
SurfaceFactory_IOSurface(GLContext* gl,
const SurfaceCaps& caps)
: SurfaceFactory_GL(gl, SharedSurfaceType::IOSurface, caps)
{
}
protected:
virtual SharedSurface* CreateShared(const gfxIntSize& size) MOZ_OVERRIDE;
};
} /* namespace gfx */
} /* namespace mozilla */
#endif /* SHARED_SURFACEIO_H_ */