| // |
| // Copyright 2024 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. |
| // |
| // RenderTargetWgpu.cpp: |
| // Implements the class methods for RenderTargetWgpu. |
| // |
| |
| #include "libANGLE/renderer/wgpu/RenderTargetWgpu.h" |
| |
| namespace rx |
| { |
| RenderTargetWgpu::RenderTargetWgpu() {} |
| |
| RenderTargetWgpu::~RenderTargetWgpu() |
| { |
| reset(); |
| } |
| |
| RenderTargetWgpu::RenderTargetWgpu(RenderTargetWgpu &&other) |
| : mImage(other.mImage), |
| mTextureView(std::move(other.mTextureView)), |
| mLevelIndex(other.mLevelIndex), |
| mLayerIndex(other.mLayerIndex), |
| mFormat(other.mFormat) |
| {} |
| |
| void RenderTargetWgpu::set(webgpu::ImageHelper *image, |
| const wgpu::TextureView &texture, |
| const webgpu::LevelIndex level, |
| uint32_t layer, |
| const wgpu::TextureFormat &format) |
| { |
| mImage = image; |
| mTextureView = texture; |
| mLevelIndex = level; |
| mLayerIndex = layer; |
| mFormat = &format; |
| } |
| |
| void RenderTargetWgpu::reset() |
| { |
| mTextureView = nullptr; |
| mLevelIndex = webgpu::LevelIndex(0); |
| mLayerIndex = 0; |
| mFormat = nullptr; |
| } |
| |
| angle::Result RenderTargetWgpu::flushImageStagedUpdates(ContextWgpu *contextWgpu, |
| webgpu::ClearValuesArray *deferredClears, |
| uint32_t deferredClearIndex) |
| { |
| gl::LevelIndex targetLevel = mImage->toGlLevel(mLevelIndex); |
| ANGLE_TRY(mImage->flushSingleLevelUpdates(contextWgpu, targetLevel, deferredClears, |
| deferredClearIndex)); |
| return angle::Result::Continue; |
| } |
| } // namespace rx |