1 //
2 // Copyright 2024 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 // SurfaceWgpu.cpp:
7 // Implements the class methods for SurfaceWgpu.
8 //
9
10 #include "libANGLE/renderer/wgpu/SurfaceWgpu.h"
11
12 #include "common/debug.h"
13
14 #include "libANGLE/renderer/wgpu/FramebufferWgpu.h"
15
16 namespace rx
17 {
18
SurfaceWgpu(const egl::SurfaceState & surfaceState)19 SurfaceWgpu::SurfaceWgpu(const egl::SurfaceState &surfaceState) : SurfaceImpl(surfaceState) {}
20
~SurfaceWgpu()21 SurfaceWgpu::~SurfaceWgpu() {}
22
initialize(const egl::Display * display)23 egl::Error SurfaceWgpu::initialize(const egl::Display *display)
24 {
25 return egl::NoError();
26 }
27
swap(const gl::Context * context)28 egl::Error SurfaceWgpu::swap(const gl::Context *context)
29 {
30 return egl::NoError();
31 }
32
postSubBuffer(const gl::Context * context,EGLint x,EGLint y,EGLint width,EGLint height)33 egl::Error SurfaceWgpu::postSubBuffer(const gl::Context *context,
34 EGLint x,
35 EGLint y,
36 EGLint width,
37 EGLint height)
38 {
39 return egl::NoError();
40 }
41
querySurfacePointerANGLE(EGLint attribute,void ** value)42 egl::Error SurfaceWgpu::querySurfacePointerANGLE(EGLint attribute, void **value)
43 {
44 UNREACHABLE();
45 return egl::NoError();
46 }
47
bindTexImage(const gl::Context * context,gl::Texture * texture,EGLint buffer)48 egl::Error SurfaceWgpu::bindTexImage(const gl::Context *context,
49 gl::Texture *texture,
50 EGLint buffer)
51 {
52 return egl::NoError();
53 }
54
releaseTexImage(const gl::Context * context,EGLint buffer)55 egl::Error SurfaceWgpu::releaseTexImage(const gl::Context *context, EGLint buffer)
56 {
57 return egl::NoError();
58 }
59
getSyncValues(EGLuint64KHR * ust,EGLuint64KHR * msc,EGLuint64KHR * sbc)60 egl::Error SurfaceWgpu::getSyncValues(EGLuint64KHR *ust, EGLuint64KHR *msc, EGLuint64KHR *sbc)
61 {
62 UNIMPLEMENTED();
63 return egl::EglBadAccess();
64 }
65
getMscRate(EGLint * numerator,EGLint * denominator)66 egl::Error SurfaceWgpu::getMscRate(EGLint *numerator, EGLint *denominator)
67 {
68 UNIMPLEMENTED();
69 return egl::EglBadAccess();
70 }
71
setSwapInterval(EGLint interval)72 void SurfaceWgpu::setSwapInterval(EGLint interval) {}
73
getWidth() const74 EGLint SurfaceWgpu::getWidth() const
75 {
76 // TODO(geofflang): Read from an actual window?
77 return 100;
78 }
79
getHeight() const80 EGLint SurfaceWgpu::getHeight() const
81 {
82 // TODO(geofflang): Read from an actual window?
83 return 100;
84 }
85
isPostSubBufferSupported() const86 EGLint SurfaceWgpu::isPostSubBufferSupported() const
87 {
88 return EGL_TRUE;
89 }
90
getSwapBehavior() const91 EGLint SurfaceWgpu::getSwapBehavior() const
92 {
93 return EGL_BUFFER_PRESERVED;
94 }
95
initializeContents(const gl::Context * context,GLenum binding,const gl::ImageIndex & imageIndex)96 angle::Result SurfaceWgpu::initializeContents(const gl::Context *context,
97 GLenum binding,
98 const gl::ImageIndex &imageIndex)
99 {
100 return angle::Result::Continue;
101 }
102
attachToFramebuffer(const gl::Context * context,gl::Framebuffer * framebuffer)103 egl::Error SurfaceWgpu::attachToFramebuffer(const gl::Context *context,
104 gl::Framebuffer *framebuffer)
105 {
106 return egl::NoError();
107 }
108
detachFromFramebuffer(const gl::Context * context,gl::Framebuffer * framebuffer)109 egl::Error SurfaceWgpu::detachFromFramebuffer(const gl::Context *context,
110 gl::Framebuffer *framebuffer)
111 {
112 return egl::NoError();
113 }
114
getAttachmentRenderTarget(const gl::Context * context,GLenum binding,const gl::ImageIndex & imageIndex,GLsizei samples,FramebufferAttachmentRenderTarget ** rtOut)115 angle::Result SurfaceWgpu::getAttachmentRenderTarget(const gl::Context *context,
116 GLenum binding,
117 const gl::ImageIndex &imageIndex,
118 GLsizei samples,
119 FramebufferAttachmentRenderTarget **rtOut)
120 {
121 UNIMPLEMENTED();
122 return angle::Result::Stop;
123 }
124
125 } // namespace rx
126