accelerated_swizzle.h 1.2 KB

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