5 changed files with 139 additions and 0 deletions
-
3src/video_core/CMakeLists.txt
-
45src/video_core/engines/maxwell_3d.cpp
-
14src/video_core/textures/decoders.cpp
-
20src/video_core/textures/decoders.h
-
57src/video_core/textures/texture.h
@ -0,0 +1,14 @@ |
|||
// Copyright 2018 yuzu Emulator Project
|
|||
// Licensed under GPLv2 or any later version
|
|||
// Refer to the license.txt file included.
|
|||
|
|||
#include "video_core/textures/decoders.h"
|
|||
|
|||
namespace Tegra { |
|||
namespace Texture { |
|||
|
|||
std::vector<u8> DecodeTexture(VAddr address, TextureFormat format, u32 width, u32 height) { |
|||
return {}; |
|||
} |
|||
} |
|||
} // namespace Tegra
|
|||
@ -0,0 +1,20 @@ |
|||
// Copyright 2018 yuzu Emulator Project |
|||
// Licensed under GPLv2 or any later version |
|||
// Refer to the license.txt file included. |
|||
|
|||
#pragma once |
|||
|
|||
#include <vector> |
|||
#include "common/common_types.h" |
|||
#include "video_core/textures/texture.h" |
|||
|
|||
namespace Tegra { |
|||
namespace Texture { |
|||
|
|||
/** |
|||
* Decodes a swizzled texture into a RGBA8888 texture. |
|||
*/ |
|||
std::vector<u8> DecodeTexture(VAddr address, TextureFormat format, u32 width, u32 height); |
|||
|
|||
} // namespace Texture |
|||
} // namespace Tegra |
|||
@ -0,0 +1,57 @@ |
|||
// 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 { |
|||
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"); |
|||
|
|||
} // namespace Texture |
|||
} // namespace Tegra |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue