// // Copyright 2019 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // MemoryObjectImpl.h: Implements the rx::MemoryObjectImpl class [EXT_external_objects] #ifndef LIBANGLE_RENDERER_MEMORYOBJECTIMPL_H_ #define LIBANGLE_RENDERER_MEMORYOBJECTIMPL_H_ #include "angle_gl.h" #include "common/PackedEnums.h" #include "common/angleutils.h" #include "libANGLE/Error.h" namespace gl { class Context; class MemoryObject; } // namespace gl namespace rx { class MemoryObjectImpl : angle::NonCopyable { public: virtual ~MemoryObjectImpl() {} virtual void onDestroy(const gl::Context *context) = 0; virtual angle::Result setDedicatedMemory(const gl::Context *context, bool dedicatedMemory) = 0; virtual angle::Result setProtectedMemory(const gl::Context *context, bool protectedMemory) = 0; virtual angle::Result importFd(gl::Context *context, GLuint64 size, gl::HandleType handleType, GLint fd) = 0; virtual angle::Result importZirconHandle(gl::Context *context, GLuint64 size, gl::HandleType handleType, GLuint handle) = 0; }; } // namespace rx #endif // LIBANGLE_RENDERER_MEMORYOBJECTIMPL_H_