// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen // SPDX-License-Identifier: BSD-3-Clause #ifndef vtkWebGPUTextureInternals_h #define vtkWebGPUTextureInternals_h #include "vtkDataArray.h" #include "vtkRenderingWebGPUModule.h" #include "vtkWebGPUConfiguration.h" #include "vtk_wgpu.h" VTK_ABI_NAMESPACE_BEGIN class VTKRENDERINGWEBGPU_NO_EXPORT vtkWebGPUTextureInternals { public: /** * Upload byteSize of data from the data pointer to the given texture using the given device and * assuming bytesPerRow bytes of data per row of the texture. */ static void Upload(vtkSmartPointer wgpuConfiguration, wgpu::Texture texture, std::uint32_t bytesPerRow, std::uint32_t byteSize, const void* data, const char* description = nullptr); /** * Uploads a maximum of bytesToUpload from a vtkDataArray to a texture assuming bytesPerRow bytes * of data per row of the texture. */ static void UploadFromDataArray(vtkSmartPointer wgpuConfiguration, wgpu::Texture texture, std::uint32_t bytesPerRow, vtkDataArray* dataArray, const char* description = nullptr); /** * Get the image copy texture from the given texture for use in uploading data to the texture */ static wgpu::TexelCopyTextureInfo GetTexelCopyTextureInfo( wgpu::Texture texture, wgpu::Origin3D origin = { 0, 0, 0 }, std::uint32_t mipLevel = 0); /** * Get the texture data layout from the given texture and bytes per row for use in uploading data * to the texture */ static wgpu::TexelCopyBufferLayout GetDataLayout( wgpu::Texture texture, std::uint32_t bytesPerRow, std::uint32_t srcOffset = 0); }; VTK_ABI_NAMESPACE_END #endif