Bug 1732409 let fake:true getUserMedia() parameter override loopback prefs r=jib
[gecko.git] / dom / canvas / WebGLParent.h
blobf86bee510b605165e804563d6c118b3106144419
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef WEBGLPARENT_H_
7 #define WEBGLPARENT_H_
9 #include "mozilla/GfxMessageUtils.h"
10 #include "mozilla/dom/PWebGLParent.h"
11 #include "mozilla/WeakPtr.h"
13 namespace mozilla {
15 class HostWebGLContext;
16 class WebGLChild;
18 namespace layers {
19 class SharedSurfaceTextureClient;
20 class SurfaceDescriptor;
21 } // namespace layers
23 namespace dom {
25 class WebGLParent : public PWebGLParent, public SupportsWeakPtr {
26 friend PWebGLParent;
28 public:
29 NS_INLINE_DECL_THREADSAFE_REFCOUNTING(WebGLParent, override);
31 mozilla::ipc::IPCResult RecvInitialize(const webgl::InitContextDesc&,
32 webgl::InitContextResult* out);
34 WebGLParent(); // For IPDL
36 using IPCResult = mozilla::ipc::IPCResult;
38 IPCResult RecvDispatchCommands(mozilla::ipc::Shmem&&, uint64_t);
39 IPCResult RecvTexImage(uint32_t level, uint32_t respecFormat,
40 const uvec3& offset, const webgl::PackingInfo&,
41 webgl::TexUnpackBlobDesc&&);
43 IPCResult RecvGetBufferSubData(GLenum target, uint64_t srcByteOffset,
44 uint64_t byteSize, mozilla::ipc::Shmem* ret);
45 IPCResult GetFrontBufferSnapshot(webgl::FrontBufferSnapshotIpc* ret,
46 IProtocol* aProtocol);
47 IPCResult RecvGetFrontBufferSnapshot(webgl::FrontBufferSnapshotIpc* ret);
48 IPCResult RecvReadPixels(const webgl::ReadPixelsDesc&, uint64_t byteSize,
49 webgl::ReadPixelsResultIpc* ret);
51 // -
53 using ObjectId = webgl::ObjectId;
55 IPCResult RecvCheckFramebufferStatus(GLenum target, GLenum* ret);
56 IPCResult RecvClientWaitSync(ObjectId id, GLbitfield flags, GLuint64 timeout,
57 GLenum* ret);
58 IPCResult RecvCreateOpaqueFramebuffer(ObjectId id,
59 const OpaqueFramebufferOptions&,
60 bool* ret);
61 IPCResult RecvDrawingBufferSize(uvec2* ret);
62 IPCResult RecvFinish();
63 IPCResult RecvGetBufferParameter(GLenum target, GLenum pname,
64 Maybe<double>* ret);
65 IPCResult RecvGetCompileResult(ObjectId id, webgl::CompileResult* ret);
66 IPCResult RecvGetError(GLenum* ret);
67 IPCResult RecvGetFragDataLocation(ObjectId id, const std::string& name,
68 GLint* ret);
69 IPCResult RecvGetFramebufferAttachmentParameter(ObjectId id,
70 GLenum attachment,
71 GLenum pname,
72 Maybe<double>* ret);
73 IPCResult RecvGetFrontBuffer(ObjectId fb, bool vr,
74 Maybe<layers::SurfaceDescriptor>* ret);
75 IPCResult RecvGetIndexedParameter(GLenum target, GLuint index,
76 Maybe<double>* ret);
77 IPCResult RecvGetInternalformatParameter(GLenum target, GLuint format,
78 GLuint pname,
79 Maybe<std::vector<int32_t>>* ret);
80 IPCResult RecvGetLinkResult(ObjectId id, webgl::LinkResult* ret);
81 IPCResult RecvGetNumber(GLenum pname, Maybe<double>* ret);
82 IPCResult RecvGetQueryParameter(ObjectId id, GLenum pname,
83 Maybe<double>* ret);
84 IPCResult RecvGetRenderbufferParameter(ObjectId id, GLenum pname,
85 Maybe<double>* ret);
86 IPCResult RecvGetSamplerParameter(ObjectId id, GLenum pname,
87 Maybe<double>* ret);
88 IPCResult RecvGetShaderPrecisionFormat(
89 GLenum shaderType, GLenum precisionType,
90 Maybe<webgl::ShaderPrecisionFormat>* ret);
91 IPCResult RecvGetString(GLenum pname, Maybe<std::string>* ret);
92 IPCResult RecvGetTexParameter(ObjectId id, GLenum pname, Maybe<double>* ret);
93 IPCResult RecvGetUniform(ObjectId id, uint32_t loc,
94 webgl::GetUniformData* ret);
95 IPCResult RecvGetVertexAttrib(GLuint index, GLenum pname, Maybe<double>* ret);
96 IPCResult RecvIsEnabled(GLenum cap, bool* ret);
97 IPCResult RecvOnMemoryPressure();
98 IPCResult RecvValidateProgram(ObjectId id, bool* ret);
100 // -
102 private:
103 ~WebGLParent();
105 mozilla::ipc::IPCResult Recv__delete__() override;
107 void ActorDestroy(ActorDestroyReason aWhy) override;
109 UniquePtr<HostWebGLContext> mHost;
111 // Runnable that repeatedly processes our WebGL command queue
112 RefPtr<Runnable> mRunCommandsRunnable;
115 } // namespace dom
116 } // namespace mozilla
118 #endif // WEBGLPARENT_H_