1 //
2 // Copyright 2016 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6
7 // SurfaceGbm.cpp: Gbm implementation of egl::SurfaceGL
8
9 #include "libANGLE/renderer/gl/egl/gbm/SurfaceGbm.h"
10
11 #include "libANGLE/renderer/gl/FramebufferGL.h"
12 #include "libANGLE/renderer/gl/egl/gbm/DisplayGbm.h"
13
14 namespace rx
15 {
16
SurfaceGbm(const egl::SurfaceState & state,DisplayGbm::Buffer * buffer)17 SurfaceGbm::SurfaceGbm(const egl::SurfaceState &state, DisplayGbm::Buffer *buffer)
18 : SurfaceGL(state), mBuffer(buffer)
19 {}
20
~SurfaceGbm()21 SurfaceGbm::~SurfaceGbm()
22 {
23 delete mBuffer;
24 }
25
initialize(const egl::Display * display)26 egl::Error SurfaceGbm::initialize(const egl::Display *display)
27 {
28 return egl::NoError();
29 }
30
createDefaultFramebuffer(const gl::Context * context,const gl::FramebufferState & state)31 FramebufferImpl *SurfaceGbm::createDefaultFramebuffer(const gl::Context *context,
32 const gl::FramebufferState &state)
33 {
34 return mBuffer->framebufferGL(context, state);
35 }
36
makeCurrent(const gl::Context * context)37 egl::Error SurfaceGbm::makeCurrent(const gl::Context *context)
38 {
39 return egl::NoError();
40 }
41
swap(const gl::Context * context)42 egl::Error SurfaceGbm::swap(const gl::Context *context)
43 {
44 mBuffer->present(context);
45 return egl::NoError();
46 }
47
postSubBuffer(const gl::Context * context,EGLint x,EGLint y,EGLint width,EGLint height)48 egl::Error SurfaceGbm::postSubBuffer(const gl::Context *context,
49 EGLint x,
50 EGLint y,
51 EGLint width,
52 EGLint height)
53 {
54 UNIMPLEMENTED();
55 return egl::NoError();
56 }
57
querySurfacePointerANGLE(EGLint attribute,void ** value)58 egl::Error SurfaceGbm::querySurfacePointerANGLE(EGLint attribute, void **value)
59 {
60 UNIMPLEMENTED();
61 return egl::NoError();
62 }
63
bindTexImage(const gl::Context * context,gl::Texture * texture,EGLint buffer)64 egl::Error SurfaceGbm::bindTexImage(const gl::Context *context, gl::Texture *texture, EGLint buffer)
65 {
66 mBuffer->bindTexImage();
67 return egl::NoError();
68 }
69
releaseTexImage(const gl::Context * context,EGLint buffer)70 egl::Error SurfaceGbm::releaseTexImage(const gl::Context *context, EGLint buffer)
71 {
72 return egl::NoError();
73 }
74
setSwapInterval(EGLint interval)75 void SurfaceGbm::setSwapInterval(EGLint interval)
76 {
77 mSwapControl.targetSwapInterval = interval;
78 }
79
getWidth() const80 EGLint SurfaceGbm::getWidth() const
81 {
82 return mBuffer->getWidth();
83 }
84
getHeight() const85 EGLint SurfaceGbm::getHeight() const
86 {
87 return mBuffer->getHeight();
88 }
89
isPostSubBufferSupported() const90 EGLint SurfaceGbm::isPostSubBufferSupported() const
91 {
92 UNIMPLEMENTED();
93 return EGL_FALSE;
94 }
95
getSwapBehavior() const96 EGLint SurfaceGbm::getSwapBehavior() const
97 {
98 return EGL_BUFFER_PRESERVED;
99 }
100 } // namespace rx
101