aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/video_core/pica.h
blob: 7cbc45f98f6851726d3aea32048481f80a1dc0ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Copyright 2014 Citra Emulator Project
// Licensed under GPLv2
// Refer to the license.txt file included.

#pragma once

#include <initializer_list>
#include <map>

#include "common/bit_field.h"
#include "common/common_types.h"

namespace Pica {

enum class CommandId : u32
{
    ViewportSizeX            =  0x41,
    ViewportInvSizeX         =  0x42,
    ViewportSizeY            =  0x43,
    ViewportInvSizeY         =  0x44,
    ViewportCorner           =  0x68,
    DepthBufferFormat        = 0x116,
    ColorBufferFormat        = 0x117,
    DepthBufferAddress       = 0x11C,
    ColorBufferAddress       = 0x11D,
    ColorBufferSize          = 0x11E,
};

union CommandHeader {
    CommandHeader(u32 h) : hex(h) {}

    u32 hex;

    BitField< 0, 16, CommandId> cmd_id;
    BitField<16,  4, u32> parameter_mask;
    BitField<20, 11, u32> extra_data_length;
    BitField<31,  1, u32> group_commands;
};

static std::map<CommandId, const char*> command_names = {
    {CommandId::ViewportSizeX, "ViewportSizeX" },
    {CommandId::ViewportInvSizeX, "ViewportInvSizeX" },
    {CommandId::ViewportSizeY, "ViewportSizeY" },
    {CommandId::ViewportInvSizeY, "ViewportInvSizeY" },
    {CommandId::ViewportCorner, "ViewportCorner" },
    {CommandId::DepthBufferFormat, "DepthBufferFormat" },
    {CommandId::ColorBufferFormat, "ColorBufferFormat" },
    {CommandId::DepthBufferAddress, "DepthBufferAddress" },
    {CommandId::ColorBufferAddress, "ColorBufferAddress" },
    {CommandId::ColorBufferSize, "ColorBufferSize" },
};

}