tor-browser

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

MemoryObject.cpp (2122B)


      1 //
      2 // Copyright 2019 The ANGLE Project Authors. All rights reserved.
      3 // Use of this source code is governed by a BSD-style license that can be
      4 // found in the LICENSE file.
      5 //
      6 // MemoryObject.h: Implements the gl::MemoryObject class [EXT_external_objects]
      7 
      8 #include "libANGLE/MemoryObject.h"
      9 
     10 #include "common/angleutils.h"
     11 #include "libANGLE/renderer/GLImplFactory.h"
     12 #include "libANGLE/renderer/MemoryObjectImpl.h"
     13 
     14 namespace gl
     15 {
     16 
     17 MemoryObject::MemoryObject(rx::GLImplFactory *factory, MemoryObjectID id)
     18    : RefCountObject(factory->generateSerial(), id),
     19      mImplementation(factory->createMemoryObject()),
     20      mImmutable(false),
     21      mDedicatedMemory(false),
     22      mProtectedMemory(false)
     23 {}
     24 
     25 MemoryObject::~MemoryObject() {}
     26 
     27 void MemoryObject::onDestroy(const Context *context)
     28 {
     29    mImplementation->onDestroy(context);
     30 }
     31 
     32 angle::Result MemoryObject::setDedicatedMemory(const Context *context, bool dedicatedMemory)
     33 {
     34    ANGLE_TRY(mImplementation->setDedicatedMemory(context, dedicatedMemory));
     35    mDedicatedMemory = dedicatedMemory;
     36    return angle::Result::Continue;
     37 }
     38 
     39 angle::Result MemoryObject::setProtectedMemory(const Context *context, bool protectedMemory)
     40 {
     41    ANGLE_TRY(mImplementation->setProtectedMemory(context, protectedMemory));
     42    mProtectedMemory = protectedMemory;
     43    return angle::Result::Continue;
     44 }
     45 
     46 angle::Result MemoryObject::importFd(Context *context,
     47                                     GLuint64 size,
     48                                     HandleType handleType,
     49                                     GLint fd)
     50 {
     51    ANGLE_TRY(mImplementation->importFd(context, size, handleType, fd));
     52    mImmutable = true;
     53    return angle::Result::Continue;
     54 }
     55 
     56 angle::Result MemoryObject::importZirconHandle(Context *context,
     57                                               GLuint64 size,
     58                                               HandleType handleType,
     59                                               GLuint handle)
     60 {
     61    ANGLE_TRY(mImplementation->importZirconHandle(context, size, handleType, handle));
     62    mImmutable = true;
     63    return angle::Result::Continue;
     64 }
     65 
     66 }  // namespace gl