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