| // Copyright 2020 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_UNOWNED_TEXTURE_H_ |
| #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_UNOWNED_TEXTURE_H_ |
| |
| #include "third_party/blink/renderer/modules/webgl/webgl_texture.h" |
| |
| namespace blink { |
| |
| // This class exists to prevent a double-freeing of a texture resource. |
| // It is also necessary for WebXR's Camera Access feature to be able to |
| // provide a camera image textures until it's decided how to best expose |
| // the texture to the WebXR API. |
| // TODO(https://bugs.chromium.org/p/chromium/issues/detail?id=1104340). |
| class WebGLUnownedTexture final : public WebGLTexture { |
| public: |
| // The provided GLuint must have been created in the same |
| // WebGLRenderingContextBase that is provided. Garbage collection of |
| // this texture will not result in any GL calls being issued. |
| explicit WebGLUnownedTexture(WebGLRenderingContextBase* ctx, |
| GLuint texture, |
| GLenum target); |
| ~WebGLUnownedTexture() override; |
| |
| private: |
| void DeleteObjectImpl(gpu::gles2::GLES2Interface*) override; |
| }; |
| |
| } // namespace blink |
| |
| #endif // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_UNOWNED_TEXTURE_H_ |