xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/gl/SurfaceGL.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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