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// RenderTargetMtl.mm: 7// Implements the class methods for RenderTargetMtl. 8// 9 10#include "libANGLE/renderer/metal/RenderTargetMtl.h" 11 12namespace rx 13{ 14RenderTargetMtl::RenderTargetMtl() {} 15 16RenderTargetMtl::~RenderTargetMtl() 17{ 18 reset(); 19} 20 21RenderTargetMtl::RenderTargetMtl(RenderTargetMtl &&other) 22 : mTexture(std::move(other.mTexture)), 23 mLevelIndex(other.mLevelIndex), 24 mLayerIndex(other.mLayerIndex) 25{} 26 27void RenderTargetMtl::set(const mtl::TextureRef &texture, 28 size_t level, 29 size_t layer, 30 const mtl::Format &format) 31{ 32 mTexture = texture; 33 mLevelIndex = level; 34 mLayerIndex = layer; 35 mFormat = &format; 36} 37 38void RenderTargetMtl::set(const mtl::TextureRef &texture) 39{ 40 mTexture = texture; 41} 42 43void RenderTargetMtl::reset() 44{ 45 mTexture.reset(); 46 mLevelIndex = 0; 47 mLayerIndex = 0; 48 mFormat = nullptr; 49} 50 51void RenderTargetMtl::toRenderPassAttachmentDesc(mtl::RenderPassAttachmentDesc *rpaDescOut) const 52{ 53 rpaDescOut->texture = mTexture; 54 rpaDescOut->level = static_cast<uint32_t>(mLevelIndex); 55 rpaDescOut->slice = static_cast<uint32_t>(mLayerIndex); 56} 57} 58