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 // SurfaceOzone.cpp: Ozone implementation of egl::SurfaceGL
8
9 #include "libANGLE/renderer/gl/egl/ozone/SurfaceOzone.h"
10
11 #include "libANGLE/renderer/gl/FramebufferGL.h"
12 #include "libANGLE/renderer/gl/egl/ozone/DisplayOzone.h"
13
14 namespace rx
15 {
16
SurfaceOzone(const egl::SurfaceState & state,DisplayOzone::Buffer * buffer)17 SurfaceOzone::SurfaceOzone(const egl::SurfaceState &state, DisplayOzone::Buffer *buffer)
18 : SurfaceGL(state), mBuffer(buffer)
19 {}
20
~SurfaceOzone()21 SurfaceOzone::~SurfaceOzone()
22 {
23 delete mBuffer;
24 }
25
initialize(const egl::Display * display)26 egl::Error SurfaceOzone::initialize(const egl::Display *display)
27 {
28 return egl::NoError();
29 }
30
createDefaultFramebuffer(const gl::Context * context,const gl::FramebufferState & state)31 FramebufferImpl *SurfaceOzone::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 SurfaceOzone::makeCurrent(const gl::Context *context)
38 {
39 return egl::NoError();
40 }
41
swap(const gl::Context * context)42 egl::Error SurfaceOzone::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 SurfaceOzone::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 SurfaceOzone::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 SurfaceOzone::bindTexImage(const gl::Context *context,
65 gl::Texture *texture,
66 EGLint buffer)
67 {
68 mBuffer->bindTexImage();
69 return egl::NoError();
70 }
71
releaseTexImage(const gl::Context * context,EGLint buffer)72 egl::Error SurfaceOzone::releaseTexImage(const gl::Context *context, EGLint buffer)
73 {
74 return egl::NoError();
75 }
76
setSwapInterval(EGLint interval)77 void SurfaceOzone::setSwapInterval(EGLint interval)
78 {
79 mSwapControl.targetSwapInterval = interval;
80 }
81
getWidth() const82 EGLint SurfaceOzone::getWidth() const
83 {
84 return mBuffer->getWidth();
85 }
86
getHeight() const87 EGLint SurfaceOzone::getHeight() const
88 {
89 return mBuffer->getHeight();
90 }
91
isPostSubBufferSupported() const92 EGLint SurfaceOzone::isPostSubBufferSupported() const
93 {
94 UNIMPLEMENTED();
95 return EGL_FALSE;
96 }
97
getSwapBehavior() const98 EGLint SurfaceOzone::getSwapBehavior() const
99 {
100 return EGL_BUFFER_PRESERVED;
101 }
102 } // namespace rx
103