| // |
| // 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. |
| // |
| // MemoryObject.h: Implements the gl::MemoryObject class [EXT_external_objects] |
| |
| #include "libANGLE/MemoryObject.h" |
| |
| #include "common/angleutils.h" |
| #include "libANGLE/renderer/GLImplFactory.h" |
| #include "libANGLE/renderer/MemoryObjectImpl.h" |
| |
| namespace gl |
| { |
| |
| MemoryObject::MemoryObject(rx::GLImplFactory *factory, MemoryObjectID id) |
| : RefCountObject(factory->generateSerial(), id), |
| mImplementation(factory->createMemoryObject()), |
| mImmutable(false), |
| mDedicatedMemory(false), |
| mProtectedMemory(false) |
| {} |
| |
| MemoryObject::~MemoryObject() {} |
| |
| void MemoryObject::onDestroy(const Context *context) |
| { |
| mImplementation->onDestroy(context); |
| } |
| |
| angle::Result MemoryObject::setDedicatedMemory(const Context *context, bool dedicatedMemory) |
| { |
| ANGLE_TRY(mImplementation->setDedicatedMemory(context, dedicatedMemory)); |
| mDedicatedMemory = dedicatedMemory; |
| return angle::Result::Continue; |
| } |
| |
| angle::Result MemoryObject::setProtectedMemory(const Context *context, bool protectedMemory) |
| { |
| ANGLE_TRY(mImplementation->setProtectedMemory(context, protectedMemory)); |
| mProtectedMemory = protectedMemory; |
| return angle::Result::Continue; |
| } |
| |
| angle::Result MemoryObject::importFd(Context *context, |
| GLuint64 size, |
| HandleType handleType, |
| GLint fd) |
| { |
| ANGLE_TRY(mImplementation->importFd(context, size, handleType, fd)); |
| mImmutable = true; |
| return angle::Result::Continue; |
| } |
| |
| angle::Result MemoryObject::importZirconHandle(Context *context, |
| GLuint64 size, |
| HandleType handleType, |
| GLuint handle) |
| { |
| ANGLE_TRY(mImplementation->importZirconHandle(context, size, handleType, handle)); |
| mImmutable = true; |
| return angle::Result::Continue; |
| } |
| |
| } // namespace gl |