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