diff options
author | bunnei <bunneidev@gmail.com> | 2018-03-25 22:28:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-25 22:28:24 +0200 |
commit | e9315ace9f7f541d251a995ff2d4d3513ddc16c4 (patch) | |
tree | ba32de7358ed98e1230c1f522a5c7ba35d7ab19e /src/video_core/textures/texture.h | |
parent | Merge pull request #281 from mailwl/sockets-services (diff) | |
parent | GPU: Make the debug_context variable a member of the frontend instead of a global. (diff) | |
download | yuzu-e9315ace9f7f541d251a995ff2d4d3513ddc16c4.tar yuzu-e9315ace9f7f541d251a995ff2d4d3513ddc16c4.tar.gz yuzu-e9315ace9f7f541d251a995ff2d4d3513ddc16c4.tar.bz2 yuzu-e9315ace9f7f541d251a995ff2d4d3513ddc16c4.tar.lz yuzu-e9315ace9f7f541d251a995ff2d4d3513ddc16c4.tar.xz yuzu-e9315ace9f7f541d251a995ff2d4d3513ddc16c4.tar.zst yuzu-e9315ace9f7f541d251a995ff2d4d3513ddc16c4.zip |
Diffstat (limited to 'src/video_core/textures/texture.h')
-rw-r--r-- | src/video_core/textures/texture.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/video_core/textures/texture.h b/src/video_core/textures/texture.h new file mode 100644 index 000000000..d969bcdd9 --- /dev/null +++ b/src/video_core/textures/texture.h @@ -0,0 +1,61 @@ +// Copyright 2018 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "common/bit_field.h" +#include "common/common_funcs.h" +#include "common/common_types.h" +#include "video_core/memory_manager.h" + +namespace Tegra { +namespace Texture { + +enum class TextureFormat : u32 { + A8R8G8B8 = 8, + DXT1 = 0x24, +}; + +union TextureHandle { + u32 raw; + BitField<0, 20, u32> tic_id; + BitField<20, 12, u32> tsc_id; +}; + +struct TICEntry { + union { + u32 raw; + BitField<0, 7, TextureFormat> format; + BitField<7, 3, u32> r_type; + BitField<10, 3, u32> g_type; + BitField<13, 3, u32> b_type; + BitField<16, 3, u32> a_type; + }; + u32 address_low; + u16 address_high; + INSERT_PADDING_BYTES(6); + u16 width_minus_1; + INSERT_PADDING_BYTES(2); + u16 height_minus_1; + INSERT_PADDING_BYTES(10); + + GPUVAddr Address() const { + return static_cast<GPUVAddr>((static_cast<GPUVAddr>(address_high) << 32) | address_low); + } + + u32 Width() const { + return width_minus_1 + 1; + } + + u32 Height() const { + return height_minus_1 + 1; + } +}; +static_assert(sizeof(TICEntry) == 0x20, "TICEntry has wrong size"); + +/// Returns the number of bytes per pixel of the input texture format. +u32 BytesPerPixel(TextureFormat format); + +} // namespace Texture +} // namespace Tegra |