1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2024 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker // RenderTargetWgpu.h: 7*8975f5c5SAndroid Build Coastguard Worker // Defines the class interface for RenderTargetWgpu. 8*8975f5c5SAndroid Build Coastguard Worker // 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_RENDERER_WGPU_RENDERTARGETWGPU_H_ 11*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_RENDERER_WGPU_RENDERTARGETWGPU_H_ 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard Worker #include <dawn/webgpu_cpp.h> 14*8975f5c5SAndroid Build Coastguard Worker #include <stdint.h> 15*8975f5c5SAndroid Build Coastguard Worker 16*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/FramebufferAttachment.h" 17*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/wgpu/wgpu_helpers.h" 18*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/wgpu/wgpu_utils.h" 19*8975f5c5SAndroid Build Coastguard Worker 20*8975f5c5SAndroid Build Coastguard Worker namespace rx 21*8975f5c5SAndroid Build Coastguard Worker { 22*8975f5c5SAndroid Build Coastguard Worker class RenderTargetWgpu final : public FramebufferAttachmentRenderTarget 23*8975f5c5SAndroid Build Coastguard Worker { 24*8975f5c5SAndroid Build Coastguard Worker public: 25*8975f5c5SAndroid Build Coastguard Worker RenderTargetWgpu(); 26*8975f5c5SAndroid Build Coastguard Worker ~RenderTargetWgpu() override; 27*8975f5c5SAndroid Build Coastguard Worker 28*8975f5c5SAndroid Build Coastguard Worker // Used in std::vector initialization. 29*8975f5c5SAndroid Build Coastguard Worker RenderTargetWgpu(RenderTargetWgpu &&other); 30*8975f5c5SAndroid Build Coastguard Worker 31*8975f5c5SAndroid Build Coastguard Worker void set(webgpu::ImageHelper *image, 32*8975f5c5SAndroid Build Coastguard Worker const wgpu::TextureView &texture, 33*8975f5c5SAndroid Build Coastguard Worker const webgpu::LevelIndex level, 34*8975f5c5SAndroid Build Coastguard Worker uint32_t layer, 35*8975f5c5SAndroid Build Coastguard Worker const wgpu::TextureFormat &format); 36*8975f5c5SAndroid Build Coastguard Worker void reset(); 37*8975f5c5SAndroid Build Coastguard Worker 38*8975f5c5SAndroid Build Coastguard Worker angle::Result flushImageStagedUpdates(ContextWgpu *contextWgpu, 39*8975f5c5SAndroid Build Coastguard Worker webgpu::ClearValuesArray *deferredClears, 40*8975f5c5SAndroid Build Coastguard Worker uint32_t deferredClearIndex); 41*8975f5c5SAndroid Build Coastguard Worker getTextureView()42*8975f5c5SAndroid Build Coastguard Worker wgpu::TextureView getTextureView() { return mTextureView; } getImage()43*8975f5c5SAndroid Build Coastguard Worker webgpu::ImageHelper *getImage() { return mImage; } getLevelIndex()44*8975f5c5SAndroid Build Coastguard Worker webgpu::LevelIndex getLevelIndex() const { return mLevelIndex; } 45*8975f5c5SAndroid Build Coastguard Worker 46*8975f5c5SAndroid Build Coastguard Worker private: 47*8975f5c5SAndroid Build Coastguard Worker webgpu::ImageHelper *mImage = nullptr; 48*8975f5c5SAndroid Build Coastguard Worker // TODO(liza): move TextureView into ImageHelper. 49*8975f5c5SAndroid Build Coastguard Worker wgpu::TextureView mTextureView; 50*8975f5c5SAndroid Build Coastguard Worker webgpu::LevelIndex mLevelIndex{0}; 51*8975f5c5SAndroid Build Coastguard Worker uint32_t mLayerIndex = 0; 52*8975f5c5SAndroid Build Coastguard Worker const wgpu::TextureFormat *mFormat = nullptr; 53*8975f5c5SAndroid Build Coastguard Worker }; 54*8975f5c5SAndroid Build Coastguard Worker } // namespace rx 55*8975f5c5SAndroid Build Coastguard Worker 56*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_RENDERER_WGPU_RENDERTARGETWGPU_H_ 57