1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2015 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker
7*8975f5c5SAndroid Build Coastguard Worker // SurfaceGL.cpp: OpenGL implementation of egl::Surface
8*8975f5c5SAndroid Build Coastguard Worker
9*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/gl/SurfaceGL.h"
10*8975f5c5SAndroid Build Coastguard Worker
11*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Context.h"
12*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Surface.h"
13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/gl/BlitGL.h"
14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/gl/ContextGL.h"
15*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/gl/FramebufferGL.h"
16*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/gl/RendererGL.h"
17*8975f5c5SAndroid Build Coastguard Worker
18*8975f5c5SAndroid Build Coastguard Worker namespace rx
19*8975f5c5SAndroid Build Coastguard Worker {
20*8975f5c5SAndroid Build Coastguard Worker
SurfaceGL(const egl::SurfaceState & state)21*8975f5c5SAndroid Build Coastguard Worker SurfaceGL::SurfaceGL(const egl::SurfaceState &state) : SurfaceImpl(state) {}
22*8975f5c5SAndroid Build Coastguard Worker
~SurfaceGL()23*8975f5c5SAndroid Build Coastguard Worker SurfaceGL::~SurfaceGL() {}
24*8975f5c5SAndroid Build Coastguard Worker
getSyncValues(EGLuint64KHR * ust,EGLuint64KHR * msc,EGLuint64KHR * sbc)25*8975f5c5SAndroid Build Coastguard Worker egl::Error SurfaceGL::getSyncValues(EGLuint64KHR *ust, EGLuint64KHR *msc, EGLuint64KHR *sbc)
26*8975f5c5SAndroid Build Coastguard Worker {
27*8975f5c5SAndroid Build Coastguard Worker UNREACHABLE();
28*8975f5c5SAndroid Build Coastguard Worker return egl::EglBadSurface();
29*8975f5c5SAndroid Build Coastguard Worker }
30*8975f5c5SAndroid Build Coastguard Worker
getMscRate(EGLint * numerator,EGLint * denominator)31*8975f5c5SAndroid Build Coastguard Worker egl::Error SurfaceGL::getMscRate(EGLint *numerator, EGLint *denominator)
32*8975f5c5SAndroid Build Coastguard Worker {
33*8975f5c5SAndroid Build Coastguard Worker UNIMPLEMENTED();
34*8975f5c5SAndroid Build Coastguard Worker return egl::EglBadAccess();
35*8975f5c5SAndroid Build Coastguard Worker }
36*8975f5c5SAndroid Build Coastguard Worker
initializeContents(const gl::Context * context,GLenum binding,const gl::ImageIndex & imageIndex)37*8975f5c5SAndroid Build Coastguard Worker angle::Result SurfaceGL::initializeContents(const gl::Context *context,
38*8975f5c5SAndroid Build Coastguard Worker GLenum binding,
39*8975f5c5SAndroid Build Coastguard Worker const gl::ImageIndex &imageIndex)
40*8975f5c5SAndroid Build Coastguard Worker {
41*8975f5c5SAndroid Build Coastguard Worker FramebufferGL *framebufferGL = GetImplAs<FramebufferGL>(context->getFramebuffer({0}));
42*8975f5c5SAndroid Build Coastguard Worker ASSERT(framebufferGL->isDefault());
43*8975f5c5SAndroid Build Coastguard Worker
44*8975f5c5SAndroid Build Coastguard Worker BlitGL *blitter = GetBlitGL(context);
45*8975f5c5SAndroid Build Coastguard Worker
46*8975f5c5SAndroid Build Coastguard Worker switch (binding)
47*8975f5c5SAndroid Build Coastguard Worker {
48*8975f5c5SAndroid Build Coastguard Worker case GL_BACK:
49*8975f5c5SAndroid Build Coastguard Worker {
50*8975f5c5SAndroid Build Coastguard Worker gl::DrawBufferMask colorAttachments{0};
51*8975f5c5SAndroid Build Coastguard Worker ANGLE_TRY(
52*8975f5c5SAndroid Build Coastguard Worker blitter->clearFramebuffer(context, colorAttachments, false, false, framebufferGL));
53*8975f5c5SAndroid Build Coastguard Worker }
54*8975f5c5SAndroid Build Coastguard Worker break;
55*8975f5c5SAndroid Build Coastguard Worker
56*8975f5c5SAndroid Build Coastguard Worker case GL_DEPTH:
57*8975f5c5SAndroid Build Coastguard Worker case GL_STENCIL:
58*8975f5c5SAndroid Build Coastguard Worker ANGLE_TRY(blitter->clearFramebuffer(context, gl::DrawBufferMask(), true, true,
59*8975f5c5SAndroid Build Coastguard Worker framebufferGL));
60*8975f5c5SAndroid Build Coastguard Worker break;
61*8975f5c5SAndroid Build Coastguard Worker
62*8975f5c5SAndroid Build Coastguard Worker default:
63*8975f5c5SAndroid Build Coastguard Worker UNREACHABLE();
64*8975f5c5SAndroid Build Coastguard Worker break;
65*8975f5c5SAndroid Build Coastguard Worker }
66*8975f5c5SAndroid Build Coastguard Worker
67*8975f5c5SAndroid Build Coastguard Worker return angle::Result::Continue;
68*8975f5c5SAndroid Build Coastguard Worker }
69*8975f5c5SAndroid Build Coastguard Worker
hasEmulatedAlphaChannel() const70*8975f5c5SAndroid Build Coastguard Worker bool SurfaceGL::hasEmulatedAlphaChannel() const
71*8975f5c5SAndroid Build Coastguard Worker {
72*8975f5c5SAndroid Build Coastguard Worker return false;
73*8975f5c5SAndroid Build Coastguard Worker }
74*8975f5c5SAndroid Build Coastguard Worker
attachToFramebuffer(const gl::Context * context,gl::Framebuffer * framebuffer)75*8975f5c5SAndroid Build Coastguard Worker egl::Error SurfaceGL::attachToFramebuffer(const gl::Context *context, gl::Framebuffer *framebuffer)
76*8975f5c5SAndroid Build Coastguard Worker {
77*8975f5c5SAndroid Build Coastguard Worker return egl::NoError();
78*8975f5c5SAndroid Build Coastguard Worker }
79*8975f5c5SAndroid Build Coastguard Worker
detachFromFramebuffer(const gl::Context * context,gl::Framebuffer * framebuffer)80*8975f5c5SAndroid Build Coastguard Worker egl::Error SurfaceGL::detachFromFramebuffer(const gl::Context *context,
81*8975f5c5SAndroid Build Coastguard Worker gl::Framebuffer *framebuffer)
82*8975f5c5SAndroid Build Coastguard Worker {
83*8975f5c5SAndroid Build Coastguard Worker return egl::NoError();
84*8975f5c5SAndroid Build Coastguard Worker }
85*8975f5c5SAndroid Build Coastguard Worker
86*8975f5c5SAndroid Build Coastguard Worker } // namespace rx
87