blob: 4d77596633d7e5d0b2f8de5c0d50eb6bb8ac3779 [file] [log] [blame]
//
// Copyright 2016 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// PbufferSurfaceEGL.h: EGL implementation of egl::Surface for pbuffers
#include "libANGLE/renderer/gl/egl/PbufferSurfaceEGL.h"
#include "libANGLE/Surface.h"
#include "libANGLE/renderer/gl/egl/egl_utils.h"
namespace rx
{
PbufferSurfaceEGL::PbufferSurfaceEGL(const egl::SurfaceState &state,
const FunctionsEGL *egl,
EGLConfig config)
: SurfaceEGL(state, egl, config)
{}
PbufferSurfaceEGL::~PbufferSurfaceEGL() {}
egl::Error PbufferSurfaceEGL::initialize(const egl::Display *display)
{
constexpr EGLint kForwardedPBufferSurfaceAttributes[] = {
EGL_WIDTH, EGL_HEIGHT, EGL_LARGEST_PBUFFER, EGL_TEXTURE_FORMAT,
EGL_TEXTURE_TARGET, EGL_MIPMAP_TEXTURE, EGL_VG_COLORSPACE, EGL_VG_ALPHA_FORMAT,
};
native_egl::AttributeVector nativeAttribs =
native_egl::TrimAttributeMap(mState.attributes, kForwardedPBufferSurfaceAttributes);
native_egl::FinalizeAttributeVector(&nativeAttribs);
mSurface = mEGL->createPbufferSurface(mConfig, nativeAttribs.data());
if (mSurface == EGL_NO_SURFACE)
{
return egl::Error(mEGL->getError(), "eglCreatePbufferSurface failed");
}
return egl::NoError();
}
} // namespace rx