blob: ba88068d5a47031ca376907db0290225feeb5936 [file] [log] [blame]
Jamie Madill9e54b5a2016-05-25 12:57:39 -04001//
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// SurfaceVk.cpp:
7// Implements the class methods for SurfaceVk.
8//
9
10#include "libANGLE/renderer/vulkan/SurfaceVk.h"
11
12#include "common/debug.h"
Jamie Madille09bd5d2016-11-29 16:20:35 -050013#include "libANGLE/renderer/vulkan/FramebufferVk.h"
14#include "libANGLE/renderer/vulkan/RendererVk.h"
Jamie Madill9e54b5a2016-05-25 12:57:39 -040015
16namespace rx
17{
18
Jamie Madille09bd5d2016-11-29 16:20:35 -050019OffscreenSurfaceVk::OffscreenSurfaceVk(const egl::SurfaceState &surfaceState,
20 EGLint width,
21 EGLint height)
22 : SurfaceImpl(surfaceState), mWidth(width), mHeight(height)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040023{
24}
25
Jamie Madille09bd5d2016-11-29 16:20:35 -050026OffscreenSurfaceVk::~OffscreenSurfaceVk()
Jamie Madill9e54b5a2016-05-25 12:57:39 -040027{
28}
29
Jamie Madille09bd5d2016-11-29 16:20:35 -050030egl::Error OffscreenSurfaceVk::initialize(const DisplayImpl *displayImpl)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040031{
Jamie Madille09bd5d2016-11-29 16:20:35 -050032 return egl::Error(EGL_SUCCESS);
Jamie Madill9e54b5a2016-05-25 12:57:39 -040033}
34
Jamie Madille09bd5d2016-11-29 16:20:35 -050035FramebufferImpl *OffscreenSurfaceVk::createDefaultFramebuffer(const gl::FramebufferState &state)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040036{
Jamie Madille09bd5d2016-11-29 16:20:35 -050037 return new FramebufferVk(state);
Jamie Madill9e54b5a2016-05-25 12:57:39 -040038}
39
Jamie Madille09bd5d2016-11-29 16:20:35 -050040egl::Error OffscreenSurfaceVk::swap(const DisplayImpl *displayImpl)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040041{
Jamie Madille09bd5d2016-11-29 16:20:35 -050042 return egl::Error(EGL_SUCCESS);
Jamie Madill9e54b5a2016-05-25 12:57:39 -040043}
44
Jamie Madille09bd5d2016-11-29 16:20:35 -050045egl::Error OffscreenSurfaceVk::postSubBuffer(EGLint /*x*/,
46 EGLint /*y*/,
47 EGLint /*width*/,
48 EGLint /*height*/)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040049{
Jamie Madille09bd5d2016-11-29 16:20:35 -050050 return egl::Error(EGL_SUCCESS);
Jamie Madill9e54b5a2016-05-25 12:57:39 -040051}
52
Jamie Madille09bd5d2016-11-29 16:20:35 -050053egl::Error OffscreenSurfaceVk::querySurfacePointerANGLE(EGLint /*attribute*/, void ** /*value*/)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040054{
Jamie Madille09bd5d2016-11-29 16:20:35 -050055 UNREACHABLE();
56 return egl::Error(EGL_BAD_CURRENT_SURFACE);
Jamie Madill9e54b5a2016-05-25 12:57:39 -040057}
58
Jamie Madille09bd5d2016-11-29 16:20:35 -050059egl::Error OffscreenSurfaceVk::bindTexImage(gl::Texture * /*texture*/, EGLint /*buffer*/)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040060{
Jamie Madille09bd5d2016-11-29 16:20:35 -050061 return egl::Error(EGL_SUCCESS);
Jamie Madill9e54b5a2016-05-25 12:57:39 -040062}
63
Jamie Madille09bd5d2016-11-29 16:20:35 -050064egl::Error OffscreenSurfaceVk::releaseTexImage(EGLint /*buffer*/)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040065{
Jamie Madille09bd5d2016-11-29 16:20:35 -050066 return egl::Error(EGL_SUCCESS);
Jamie Madill9e54b5a2016-05-25 12:57:39 -040067}
68
Jamie Madille09bd5d2016-11-29 16:20:35 -050069void OffscreenSurfaceVk::setSwapInterval(EGLint /*interval*/)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040070{
Jamie Madill9e54b5a2016-05-25 12:57:39 -040071}
72
Jamie Madille09bd5d2016-11-29 16:20:35 -050073EGLint OffscreenSurfaceVk::getWidth() const
Jamie Madill9e54b5a2016-05-25 12:57:39 -040074{
Jamie Madille09bd5d2016-11-29 16:20:35 -050075 return mWidth;
Jamie Madill9e54b5a2016-05-25 12:57:39 -040076}
77
Jamie Madille09bd5d2016-11-29 16:20:35 -050078EGLint OffscreenSurfaceVk::getHeight() const
Jamie Madill9e54b5a2016-05-25 12:57:39 -040079{
Jamie Madille09bd5d2016-11-29 16:20:35 -050080 return mHeight;
Jamie Madill9e54b5a2016-05-25 12:57:39 -040081}
82
Jamie Madille09bd5d2016-11-29 16:20:35 -050083EGLint OffscreenSurfaceVk::isPostSubBufferSupported() const
Jamie Madill9e54b5a2016-05-25 12:57:39 -040084{
Jamie Madille09bd5d2016-11-29 16:20:35 -050085 return EGL_FALSE;
Jamie Madill9e54b5a2016-05-25 12:57:39 -040086}
87
Jamie Madille09bd5d2016-11-29 16:20:35 -050088EGLint OffscreenSurfaceVk::getSwapBehavior() const
Jamie Madill9e54b5a2016-05-25 12:57:39 -040089{
Jamie Madille09bd5d2016-11-29 16:20:35 -050090 return EGL_BUFFER_PRESERVED;
Jamie Madill9e54b5a2016-05-25 12:57:39 -040091}
92
Jamie Madille09bd5d2016-11-29 16:20:35 -050093gl::Error OffscreenSurfaceVk::getAttachmentRenderTarget(
94 const gl::FramebufferAttachment::Target & /*target*/,
95 FramebufferAttachmentRenderTarget ** /*rtOut*/)
Jamie Madill9e54b5a2016-05-25 12:57:39 -040096{
Jamie Madille09bd5d2016-11-29 16:20:35 -050097 UNREACHABLE();
98 return gl::Error(GL_INVALID_OPERATION);
99}
100
101WindowSurfaceVk::WindowSurfaceVk(const egl::SurfaceState &surfaceState, EGLNativeWindowType window)
102 : SurfaceImpl(surfaceState)
103{
104}
105
106WindowSurfaceVk::~WindowSurfaceVk()
107{
108}
109
110egl::Error WindowSurfaceVk::initialize(const DisplayImpl *displayImpl)
111{
112 // TODO(jmadill)
113 return egl::Error(EGL_SUCCESS);
114}
115
116FramebufferImpl *WindowSurfaceVk::createDefaultFramebuffer(const gl::FramebufferState &state)
117{
118 return new FramebufferVk(state);
119}
120
121egl::Error WindowSurfaceVk::swap(const DisplayImpl *displayImpl)
122{
123 // TODO(jmadill)
124 return egl::Error(EGL_SUCCESS);
125}
126
127egl::Error WindowSurfaceVk::postSubBuffer(EGLint x, EGLint y, EGLint width, EGLint height)
128{
129 // TODO(jmadill)
130 return egl::Error(EGL_SUCCESS);
131}
132
133egl::Error WindowSurfaceVk::querySurfacePointerANGLE(EGLint attribute, void **value)
134{
135 UNREACHABLE();
136 return egl::Error(EGL_BAD_CURRENT_SURFACE);
137}
138
139egl::Error WindowSurfaceVk::bindTexImage(gl::Texture *texture, EGLint buffer)
140{
141 return egl::Error(EGL_SUCCESS);
142}
143
144egl::Error WindowSurfaceVk::releaseTexImage(EGLint buffer)
145{
146 return egl::Error(EGL_SUCCESS);
147}
148
149void WindowSurfaceVk::setSwapInterval(EGLint interval)
150{
151}
152
153EGLint WindowSurfaceVk::getWidth() const
154{
155 // TODO(jmadill)
156 return 0;
157}
158
159EGLint WindowSurfaceVk::getHeight() const
160{
161 // TODO(jmadill)
162 return 0;
163}
164
165EGLint WindowSurfaceVk::isPostSubBufferSupported() const
166{
167 // TODO(jmadill)
168 return EGL_FALSE;
169}
170
171EGLint WindowSurfaceVk::getSwapBehavior() const
172{
173 // TODO(jmadill)
174 return EGL_BUFFER_DESTROYED;
175}
176
177gl::Error WindowSurfaceVk::getAttachmentRenderTarget(
178 const gl::FramebufferAttachment::Target &target,
179 FramebufferAttachmentRenderTarget **rtOut)
180{
181 UNREACHABLE();
Jamie Madill9e54b5a2016-05-25 12:57:39 -0400182 return gl::Error(GL_INVALID_OPERATION);
183}
184
185} // namespace rx