ImageSibling::~ImageSibling() { // EGL images should hold a ref to their targets and siblings, a Texture should not be deletable // while it is attached to an EGL image. ASSERT(mSourcesOf.empty()); orphanImages(); }
Error Renderbuffer::onDestroy(const Context *context) { ANGLE_TRY(orphanImages(context)); if (mImplementation) { ANGLE_TRY(mImplementation->onDestroy(context)); } return NoError(); }
Error Renderbuffer::setStorageEGLImageTarget(const Context *context, egl::Image *image) { ANGLE_TRY(orphanImages(context)); ANGLE_TRY(mImplementation->setStorageEGLImageTarget(context, image)); setTargetImage(context, image); mState.update(static_cast<GLsizei>(image->getWidth()), static_cast<GLsizei>(image->getHeight()), Format(image->getFormat()), 0, image->sourceInitState()); mDirtyChannel.signal(mState.mInitState); return NoError(); }
Error Renderbuffer::setStorage(const Context *context, GLenum internalformat, size_t width, size_t height) { ANGLE_TRY(orphanImages(context)); ANGLE_TRY(mImplementation->setStorage(context, internalformat, width, height)); mState.update(static_cast<GLsizei>(width), static_cast<GLsizei>(height), Format(internalformat), 0, InitState::MayNeedInit); mDirtyChannel.signal(mState.mInitState); return NoError(); }