| // | |
| // 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 |