1 // Copyright 2008 Dolphin Emulator Project
2 // Licensed under GPLv2+
3 // Refer to the license.txt file included.
4
5 #pragma once
6
7 #include "Common/CommonTypes.h"
8
9 // These are accurate (disregarding AA modes).
10 constexpr u32 EFB_WIDTH = 640;
11 constexpr u32 EFB_HEIGHT = 528;
12
13 // Max XFB width is 720. You can only copy out 640 wide areas of efb to XFB
14 // so you need multiple copies to do the full width.
15 // The VI can do horizontal scaling (TODO: emulate).
16 constexpr u32 MAX_XFB_WIDTH = 720;
17
18 // Although EFB height is 528, 576-line XFB's can be created either with
19 // vertical scaling by the EFB copy operation or copying to multiple XFB's
20 // that are next to each other in memory (TODO: handle that situation).
21 constexpr u32 MAX_XFB_HEIGHT = 576;
22
23 #define PRIM_LOG(...) DEBUG_LOG(VIDEO, ##__VA_ARGS__)
24
25 // warning: mapping buffer should be disabled to use this
26 // #define LOG_VTX() DEBUG_LOG(VIDEO, "vtx: %f %f %f, ", ((float*)g_vertex_manager_write_ptr)[-3],
27 // ((float*)g_vertex_manager_write_ptr)[-2], ((float*)g_vertex_manager_write_ptr)[-1]);
28
29 #define LOG_VTX()
30
31 enum class APIType
32 {
33 OpenGL,
34 D3D,
35 Vulkan,
36 Nothing
37 };
38
RGBA8ToRGBA6ToRGBA8(u32 src)39 inline u32 RGBA8ToRGBA6ToRGBA8(u32 src)
40 {
41 u32 color = src;
42 color &= 0xFCFCFCFC;
43 color |= (color >> 6) & 0x03030303;
44 return color;
45 }
46
RGBA8ToRGB565ToRGBA8(u32 src)47 inline u32 RGBA8ToRGB565ToRGBA8(u32 src)
48 {
49 u32 color = (src & 0xF8FCF8);
50 color |= (color >> 5) & 0x070007;
51 color |= (color >> 6) & 0x000300;
52 color |= 0xFF000000;
53 return color;
54 }
55
Z24ToZ16ToZ24(u32 src)56 inline u32 Z24ToZ16ToZ24(u32 src)
57 {
58 return (src & 0xFFFF00) | (src >> 16);
59 }
60