tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

WebGLMethodDispatcher.h (7017B)


      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/. */
      5 
      6 #ifndef WEBGLMETHODDISPATCHER_H_
      7 #define WEBGLMETHODDISPATCHER_H_
      8 
      9 #include "HostWebGLContext.h"
     10 #include "TexUnpackBlob.h"
     11 #include "WebGLQueueParamTraits.h"
     12 
     13 namespace mozilla {
     14 
     15 template <size_t id = 0>
     16 class WebGLMethodDispatcher
     17    : public EmptyMethodDispatcher<WebGLMethodDispatcher> {};
     18 
     19 template <typename MethodT, MethodT Method>
     20 size_t IdByMethod();
     21 
     22 #define DEFINE_METHOD_DISPATCHER(_ID, _METHOD)                  \
     23  template <>                                                   \
     24  class WebGLMethodDispatcher<_ID>                              \
     25      : public MethodDispatcher<WebGLMethodDispatcher, _ID,     \
     26                                decltype(&_METHOD), &_METHOD> { \
     27   public:                                                      \
     28    static inline const char* Name() { return #_METHOD; }       \
     29  };                                                            \
     30  template <>                                                   \
     31  inline size_t IdByMethod<decltype(&_METHOD), &_METHOD>() {    \
     32    return _ID;                                                 \
     33  }
     34 
     35 // Defines each method the WebGLMethodDispatcher handles.  The COUNTER value
     36 // is used as a cross-process ID for each of the methods.
     37 #define DEFINE_ASYNC(_METHOD) DEFINE_METHOD_DISPATCHER(__COUNTER__, _METHOD)
     38 
     39 DEFINE_ASYNC(HostWebGLContext::CreateBuffer)
     40 DEFINE_ASYNC(HostWebGLContext::CreateFramebuffer)
     41 DEFINE_ASYNC(HostWebGLContext::CreateProgram)
     42 DEFINE_ASYNC(HostWebGLContext::CreateQuery)
     43 DEFINE_ASYNC(HostWebGLContext::CreateRenderbuffer)
     44 DEFINE_ASYNC(HostWebGLContext::CreateSampler)
     45 DEFINE_ASYNC(HostWebGLContext::CreateShader)
     46 DEFINE_ASYNC(HostWebGLContext::CreateSync)
     47 DEFINE_ASYNC(HostWebGLContext::CreateTexture)
     48 DEFINE_ASYNC(HostWebGLContext::CreateTransformFeedback)
     49 DEFINE_ASYNC(HostWebGLContext::CreateVertexArray)
     50 
     51 DEFINE_ASYNC(HostWebGLContext::DeleteBuffer)
     52 DEFINE_ASYNC(HostWebGLContext::DeleteFramebuffer)
     53 DEFINE_ASYNC(HostWebGLContext::DeleteProgram)
     54 DEFINE_ASYNC(HostWebGLContext::DeleteQuery)
     55 DEFINE_ASYNC(HostWebGLContext::DeleteRenderbuffer)
     56 DEFINE_ASYNC(HostWebGLContext::DeleteSampler)
     57 DEFINE_ASYNC(HostWebGLContext::DeleteShader)
     58 DEFINE_ASYNC(HostWebGLContext::DeleteSync)
     59 DEFINE_ASYNC(HostWebGLContext::DeleteTexture)
     60 DEFINE_ASYNC(HostWebGLContext::DeleteTransformFeedback)
     61 DEFINE_ASYNC(HostWebGLContext::DeleteVertexArray)
     62 
     63 DEFINE_ASYNC(HostWebGLContext::SetEnabled)
     64 DEFINE_ASYNC(HostWebGLContext::GenerateError)
     65 DEFINE_ASYNC(HostWebGLContext::Resize)
     66 DEFINE_ASYNC(HostWebGLContext::RequestExtension)
     67 DEFINE_ASYNC(HostWebGLContext::DidRefresh)
     68 DEFINE_ASYNC(HostWebGLContext::AttachShader)
     69 DEFINE_ASYNC(HostWebGLContext::BindAttribLocation)
     70 DEFINE_ASYNC(HostWebGLContext::BindFramebuffer)
     71 DEFINE_ASYNC(HostWebGLContext::BlendColor)
     72 DEFINE_ASYNC(HostWebGLContext::BlendEquationSeparate)
     73 DEFINE_ASYNC(HostWebGLContext::BlendFuncSeparate)
     74 DEFINE_ASYNC(HostWebGLContext::Clear)
     75 DEFINE_ASYNC(HostWebGLContext::ClearColor)
     76 DEFINE_ASYNC(HostWebGLContext::ClearDepth)
     77 DEFINE_ASYNC(HostWebGLContext::ClearStencil)
     78 DEFINE_ASYNC(HostWebGLContext::ColorMask)
     79 DEFINE_ASYNC(HostWebGLContext::CompileShader)
     80 DEFINE_ASYNC(HostWebGLContext::CullFace)
     81 DEFINE_ASYNC(HostWebGLContext::DepthFunc)
     82 DEFINE_ASYNC(HostWebGLContext::DepthMask)
     83 DEFINE_ASYNC(HostWebGLContext::DepthRange)
     84 DEFINE_ASYNC(HostWebGLContext::DetachShader)
     85 DEFINE_ASYNC(HostWebGLContext::Flush)
     86 DEFINE_ASYNC(HostWebGLContext::FramebufferAttach)
     87 DEFINE_ASYNC(HostWebGLContext::FrontFace)
     88 DEFINE_ASYNC(HostWebGLContext::Hint)
     89 DEFINE_ASYNC(HostWebGLContext::LineWidth)
     90 DEFINE_ASYNC(HostWebGLContext::LinkProgram)
     91 DEFINE_ASYNC(HostWebGLContext::PolygonOffset)
     92 DEFINE_ASYNC(HostWebGLContext::ProvokingVertex)
     93 DEFINE_ASYNC(HostWebGLContext::Present)
     94 DEFINE_ASYNC(HostWebGLContext::SampleCoverage)
     95 DEFINE_ASYNC(HostWebGLContext::Scissor)
     96 DEFINE_ASYNC(HostWebGLContext::SetDrawingBufferColorSpace)
     97 DEFINE_ASYNC(HostWebGLContext::SetUnpackColorSpace)
     98 DEFINE_ASYNC(HostWebGLContext::ShaderSource)
     99 DEFINE_ASYNC(HostWebGLContext::StencilFuncSeparate)
    100 DEFINE_ASYNC(HostWebGLContext::StencilMaskSeparate)
    101 DEFINE_ASYNC(HostWebGLContext::StencilOpSeparate)
    102 DEFINE_ASYNC(HostWebGLContext::Viewport)
    103 DEFINE_ASYNC(HostWebGLContext::BindBuffer)
    104 DEFINE_ASYNC(HostWebGLContext::BindBufferRange)
    105 DEFINE_ASYNC(HostWebGLContext::CopyBufferSubData)
    106 DEFINE_ASYNC(HostWebGLContext::BufferData)
    107 DEFINE_ASYNC(HostWebGLContext::BufferData_SizeOnly)
    108 DEFINE_ASYNC(HostWebGLContext::BufferSubData)
    109 DEFINE_ASYNC(HostWebGLContext::BlitFramebuffer)
    110 DEFINE_ASYNC(HostWebGLContext::InvalidateFramebuffer)
    111 DEFINE_ASYNC(HostWebGLContext::InvalidateSubFramebuffer)
    112 DEFINE_ASYNC(HostWebGLContext::ReadBuffer)
    113 DEFINE_ASYNC(HostWebGLContext::RenderbufferStorageMultisample)
    114 DEFINE_ASYNC(HostWebGLContext::ActiveTexture)
    115 DEFINE_ASYNC(HostWebGLContext::BindTexture)
    116 DEFINE_ASYNC(HostWebGLContext::GenerateMipmap)
    117 DEFINE_ASYNC(HostWebGLContext::CopyTexImage)
    118 DEFINE_ASYNC(HostWebGLContext::TexStorage)
    119 DEFINE_ASYNC(HostWebGLContext::TexImage)
    120 DEFINE_ASYNC(HostWebGLContext::CompressedTexImage)
    121 DEFINE_ASYNC(HostWebGLContext::TexParameter_base)
    122 DEFINE_ASYNC(HostWebGLContext::UseProgram)
    123 DEFINE_ASYNC(HostWebGLContext::UniformData)
    124 DEFINE_ASYNC(HostWebGLContext::VertexAttrib4T)
    125 DEFINE_ASYNC(HostWebGLContext::VertexAttribDivisor)
    126 DEFINE_ASYNC(HostWebGLContext::UniformBlockBinding)
    127 DEFINE_ASYNC(HostWebGLContext::EnableVertexAttribArray)
    128 DEFINE_ASYNC(HostWebGLContext::DisableVertexAttribArray)
    129 DEFINE_ASYNC(HostWebGLContext::VertexAttribPointer)
    130 DEFINE_ASYNC(HostWebGLContext::ClearBufferTv)
    131 DEFINE_ASYNC(HostWebGLContext::ClearBufferfi)
    132 DEFINE_ASYNC(HostWebGLContext::ReadPixelsPbo)
    133 DEFINE_ASYNC(HostWebGLContext::BindSampler)
    134 DEFINE_ASYNC(HostWebGLContext::SamplerParameteri)
    135 DEFINE_ASYNC(HostWebGLContext::SamplerParameterf)
    136 DEFINE_ASYNC(HostWebGLContext::BindTransformFeedback)
    137 DEFINE_ASYNC(HostWebGLContext::BeginTransformFeedback)
    138 DEFINE_ASYNC(HostWebGLContext::EndTransformFeedback)
    139 DEFINE_ASYNC(HostWebGLContext::PauseTransformFeedback)
    140 DEFINE_ASYNC(HostWebGLContext::ResumeTransformFeedback)
    141 DEFINE_ASYNC(HostWebGLContext::TransformFeedbackVaryings)
    142 DEFINE_ASYNC(HostWebGLContext::DrawBuffers)
    143 DEFINE_ASYNC(HostWebGLContext::BindVertexArray)
    144 DEFINE_ASYNC(HostWebGLContext::DrawArraysInstanced)
    145 DEFINE_ASYNC(HostWebGLContext::DrawElementsInstanced)
    146 DEFINE_ASYNC(HostWebGLContext::BeginQuery)
    147 DEFINE_ASYNC(HostWebGLContext::EndQuery)
    148 DEFINE_ASYNC(HostWebGLContext::QueryCounter)
    149 DEFINE_ASYNC(HostWebGLContext::SetFramebufferIsInOpaqueRAF)
    150 DEFINE_ASYNC(HostWebGLContext::ClearVRSwapChain)
    151 DEFINE_ASYNC(HostWebGLContext::CopyToSwapChain)
    152 DEFINE_ASYNC(HostWebGLContext::EndOfFrame)
    153 
    154 #undef DEFINE_ASYNC
    155 #undef DEFINE_METHOD_DISPATCHER
    156 
    157 }  // namespace mozilla
    158 
    159 #endif  // WEBGLMETHODDISPATCHER_H_