summaryrefslogblamecommitdiffstats
path: root/src/video_core/texture_cache/accelerated_swizzle.h
blob: d4250da6898459d4332dc441eae0ae078be50151 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

                                                               











                                                

                                               



























                                                                        
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

#include <array>

#include "common/common_types.h"
#include "video_core/texture_cache/image_info.h"
#include "video_core/texture_cache/types.h"

namespace VideoCommon::Accelerated {

struct BlockLinearSwizzle2DParams {
    alignas(16) std::array<u32, 3> origin;
    alignas(16) std::array<s32, 3> destination;
    u32 bytes_per_block_log2;
    u32 layer_stride;
    u32 block_size;
    u32 x_shift;
    u32 block_height;
    u32 block_height_mask;
};

struct BlockLinearSwizzle3DParams {
    std::array<u32, 3> origin;
    std::array<s32, 3> destination;
    u32 bytes_per_block_log2;
    u32 slice_size;
    u32 block_size;
    u32 x_shift;
    u32 block_height;
    u32 block_height_mask;
    u32 block_depth;
    u32 block_depth_mask;
};

[[nodiscard]] BlockLinearSwizzle2DParams MakeBlockLinearSwizzle2DParams(
    const SwizzleParameters& swizzle, const ImageInfo& info);

[[nodiscard]] BlockLinearSwizzle3DParams MakeBlockLinearSwizzle3DParams(
    const SwizzleParameters& swizzle, const ImageInfo& info);

} // namespace VideoCommon::Accelerated