2022-04-23 10:59:50 +02:00
|
|
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
2020-12-30 06:25:23 +01:00
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "common/common_funcs.h"
|
|
|
|
#include "video_core/surface.h"
|
|
|
|
#include "video_core/texture_cache/types.h"
|
|
|
|
|
|
|
|
namespace VideoCommon {
|
|
|
|
|
|
|
|
using VideoCore::Surface::PixelFormat;
|
|
|
|
|
|
|
|
struct ImageViewInfo;
|
|
|
|
struct ImageInfo;
|
|
|
|
|
2021-07-28 07:47:06 +02:00
|
|
|
struct NullImageViewParams {};
|
2020-12-30 06:25:23 +01:00
|
|
|
|
|
|
|
enum class ImageViewFlagBits : u16 {
|
|
|
|
PreemtiveDownload = 1 << 0,
|
|
|
|
Strong = 1 << 1,
|
|
|
|
Slice = 1 << 2,
|
|
|
|
};
|
|
|
|
DECLARE_ENUM_FLAG_OPERATORS(ImageViewFlagBits)
|
|
|
|
|
|
|
|
struct ImageViewBase {
|
|
|
|
explicit ImageViewBase(const ImageViewInfo& info, const ImageInfo& image_info,
|
|
|
|
ImageId image_id);
|
2021-04-07 01:14:55 +02:00
|
|
|
explicit ImageViewBase(const ImageInfo& info, const ImageViewInfo& view_info);
|
2021-07-28 07:47:06 +02:00
|
|
|
explicit ImageViewBase(const NullImageViewParams&);
|
2020-12-30 06:25:23 +01:00
|
|
|
|
|
|
|
[[nodiscard]] bool IsBuffer() const noexcept {
|
|
|
|
return type == ImageViewType::Buffer;
|
|
|
|
}
|
|
|
|
|
|
|
|
ImageId image_id{};
|
|
|
|
PixelFormat format{};
|
|
|
|
ImageViewType type{};
|
|
|
|
SubresourceRange range;
|
|
|
|
Extent3D size{0, 0, 0};
|
|
|
|
ImageViewFlagBits flags{};
|
|
|
|
|
|
|
|
u64 invalidation_tick = 0;
|
|
|
|
u64 modification_tick = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace VideoCommon
|