accelerated_swizzle.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <array>
  5. #include "common/common_types.h"
  6. #include "video_core/texture_cache/image_info.h"
  7. #include "video_core/texture_cache/types.h"
  8. namespace VideoCommon::Accelerated {
  9. struct BlockLinearSwizzle2DParams {
  10. alignas(16) std::array<u32, 3> origin;
  11. alignas(16) std::array<s32, 3> destination;
  12. u32 bytes_per_block_log2;
  13. u32 layer_stride;
  14. u32 block_size;
  15. u32 x_shift;
  16. u32 block_height;
  17. u32 block_height_mask;
  18. };
  19. struct BlockLinearSwizzle3DParams {
  20. std::array<u32, 3> origin;
  21. std::array<s32, 3> destination;
  22. u32 bytes_per_block_log2;
  23. u32 slice_size;
  24. u32 block_size;
  25. u32 x_shift;
  26. u32 block_height;
  27. u32 block_height_mask;
  28. u32 block_depth;
  29. u32 block_depth_mask;
  30. };
  31. [[nodiscard]] BlockLinearSwizzle2DParams MakeBlockLinearSwizzle2DParams(
  32. const SwizzleParameters& swizzle, const ImageInfo& info);
  33. [[nodiscard]] BlockLinearSwizzle3DParams MakeBlockLinearSwizzle3DParams(
  34. const SwizzleParameters& swizzle, const ImageInfo& info);
  35. } // namespace VideoCommon::Accelerated