• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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