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 // SurfaceNULL.cpp:
7 // Implements the class methods for SurfaceNULL.
8 //
9
10 #include "libANGLE/renderer/null/SurfaceNULL.h"
11
12 #include "common/debug.h"
13
14 #include "libANGLE/renderer/null/FramebufferNULL.h"
15
16 namespace rx
17 {
18
SurfaceNULL(const egl::SurfaceState & surfaceState)19 SurfaceNULL::SurfaceNULL(const egl::SurfaceState &surfaceState) : SurfaceImpl(surfaceState) {}
20
~SurfaceNULL()21 SurfaceNULL::~SurfaceNULL() {}
22
initialize(const egl::Display * display)23 egl::Error SurfaceNULL::initialize(const egl::Display *display)
24 {
25 return egl::NoError();
26 }
27
createDefaultFramebuffer(const gl::Context * context,const gl::FramebufferState & state)28 FramebufferImpl *SurfaceNULL::createDefaultFramebuffer(const gl::Context *context,
29 const gl::FramebufferState &state)
30 {
31 return new FramebufferNULL(state);
32 }
33
swap(const gl::Context * context)34 egl::Error SurfaceNULL::swap(const gl::Context *context)
35 {
36 return egl::NoError();
37 }
38
postSubBuffer(const gl::Context * context,EGLint x,EGLint y,EGLint width,EGLint height)39 egl::Error SurfaceNULL::postSubBuffer(const gl::Context *context,
40 EGLint x,
41 EGLint y,
42 EGLint width,
43 EGLint height)
44 {
45 return egl::NoError();
46 }
47
querySurfacePointerANGLE(EGLint attribute,void ** value)48 egl::Error SurfaceNULL::querySurfacePointerANGLE(EGLint attribute, void **value)
49 {
50 UNREACHABLE();
51 return egl::NoError();
52 }
53
bindTexImage(const gl::Context * context,gl::Texture * texture,EGLint buffer)54 egl::Error SurfaceNULL::bindTexImage(const gl::Context *context,
55 gl::Texture *texture,
56 EGLint buffer)
57 {
58 return egl::NoError();
59 }
60
releaseTexImage(const gl::Context * context,EGLint buffer)61 egl::Error SurfaceNULL::releaseTexImage(const gl::Context *context, EGLint buffer)
62 {
63 return egl::NoError();
64 }
65
getSyncValues(EGLuint64KHR * ust,EGLuint64KHR * msc,EGLuint64KHR * sbc)66 egl::Error SurfaceNULL::getSyncValues(EGLuint64KHR *ust, EGLuint64KHR *msc, EGLuint64KHR *sbc)
67 {
68 UNIMPLEMENTED();
69 return egl::EglBadAccess();
70 }
71
getMscRate(EGLint * numerator,EGLint * denominator)72 egl::Error SurfaceNULL::getMscRate(EGLint *numerator, EGLint *denominator)
73 {
74 UNIMPLEMENTED();
75 return egl::EglBadAccess();
76 }
77
setSwapInterval(EGLint interval)78 void SurfaceNULL::setSwapInterval(EGLint interval) {}
79
getWidth() const80 EGLint SurfaceNULL::getWidth() const
81 {
82 // TODO(geofflang): Read from an actual window?
83 return 100;
84 }
85
getHeight() const86 EGLint SurfaceNULL::getHeight() const
87 {
88 // TODO(geofflang): Read from an actual window?
89 return 100;
90 }
91
isPostSubBufferSupported() const92 EGLint SurfaceNULL::isPostSubBufferSupported() const
93 {
94 return EGL_TRUE;
95 }
96
getSwapBehavior() const97 EGLint SurfaceNULL::getSwapBehavior() const
98 {
99 return EGL_BUFFER_PRESERVED;
100 }
101
initializeContents(const gl::Context * context,const gl::ImageIndex & imageIndex)102 angle::Result SurfaceNULL::initializeContents(const gl::Context *context,
103 const gl::ImageIndex &imageIndex)
104 {
105 return angle::Result::Continue;
106 }
107
108 } // namespace rx
109