2 changed files with 101 additions and 0 deletions
@ -0,0 +1,100 @@ |
|||
// SPDX-License-Identifier: GPL-3.0-or-later |
|||
// Copyright 2021 yuzu Emulator Project |
|||
// Copyright 2007 The Android Open Source Project |
|||
// Parts of this implementation were base on: |
|||
// https://cs.android.com/android/platform/superproject/+/android-5.1.1_r38:frameworks/native/include/ui/GraphicBuffer.h |
|||
|
|||
#pragma once |
|||
|
|||
#include "common/common_funcs.h" |
|||
#include "common/common_types.h" |
|||
#include "core/hle/service/nvflinger/pixel_format.h" |
|||
|
|||
namespace android { |
|||
|
|||
class GraphicBuffer final { |
|||
public: |
|||
constexpr GraphicBuffer() = default; |
|||
|
|||
constexpr GraphicBuffer(u32 width_, u32 height_, PixelFormat format_, u32 usage_) |
|||
: width{static_cast<s32>(width_)}, height{static_cast<s32>(height_)}, format{format_}, |
|||
usage{static_cast<s32>(usage_)} {} |
|||
|
|||
constexpr u32 Width() const { |
|||
return static_cast<u32>(width); |
|||
} |
|||
|
|||
constexpr u32 Height() const { |
|||
return static_cast<u32>(height); |
|||
} |
|||
|
|||
constexpr u32 Stride() const { |
|||
return static_cast<u32>(stride); |
|||
} |
|||
|
|||
constexpr u32 Usage() const { |
|||
return static_cast<u32>(usage); |
|||
} |
|||
|
|||
constexpr PixelFormat Format() const { |
|||
return format; |
|||
} |
|||
|
|||
constexpr u32 BufferId() const { |
|||
return buffer_id; |
|||
} |
|||
|
|||
constexpr u32 ExternalFormat() const { |
|||
return external_format; |
|||
} |
|||
|
|||
constexpr u32 Handle() const { |
|||
return handle; |
|||
} |
|||
|
|||
constexpr u32 Offset() const { |
|||
return offset; |
|||
} |
|||
|
|||
constexpr bool NeedsReallocation(u32 width_, u32 height_, PixelFormat format_, |
|||
u32 usage_) const { |
|||
if (static_cast<s32>(width_) != width) { |
|||
return true; |
|||
} |
|||
|
|||
if (static_cast<s32>(height_) != height) { |
|||
return true; |
|||
} |
|||
|
|||
if (format_ != format) { |
|||
return true; |
|||
} |
|||
|
|||
if ((static_cast<u32>(usage) & usage_) != usage_) { |
|||
return true; |
|||
} |
|||
|
|||
return false; |
|||
} |
|||
|
|||
private: |
|||
u32 magic{}; |
|||
s32 width{}; |
|||
s32 height{}; |
|||
s32 stride{}; |
|||
PixelFormat format{}; |
|||
s32 usage{}; |
|||
INSERT_PADDING_WORDS(1); |
|||
u32 index{}; |
|||
INSERT_PADDING_WORDS(3); |
|||
u32 buffer_id{}; |
|||
INSERT_PADDING_WORDS(6); |
|||
u32 external_format{}; |
|||
INSERT_PADDING_WORDS(10); |
|||
u32 handle{}; |
|||
u32 offset{}; |
|||
INSERT_PADDING_WORDS(60); |
|||
}; |
|||
static_assert(sizeof(GraphicBuffer) == 0x16C, "GraphicBuffer has wrong size"); |
|||
|
|||
} // namespace android |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue