summaryrefslogblamecommitdiffstats
path: root/src/video_core/command_processor.h
blob: b511bfcf7be8f6368cb3a12c240c17478db53017 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                            

























                                                                                         
                    
// Copyright 2018 yuzu Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.

#pragma once

#include <type_traits>
#include "common/bit_field.h"
#include "common/common_types.h"

namespace Tegra {

enum class SubmissionMode : u32 {
    IncreasingOld = 0,
    Increasing = 1,
    NonIncreasingOld = 2,
    NonIncreasing = 3,
    Inline = 4,
    IncreaseOnce = 5
};

union CommandHeader {
    u32 hex;

    BitField<0, 13, u32> method;
    BitField<13, 3, u32> subchannel;

    BitField<16, 13, u32> arg_count;
    BitField<16, 13, u32> inline_data;

    BitField<29, 3, SubmissionMode> mode;
};
static_assert(std::is_standard_layout<CommandHeader>::value == true,
              "CommandHeader does not use standard layout");
static_assert(sizeof(CommandHeader) == sizeof(u32), "CommandHeader has incorrect size!");

void ProcessCommandList(VAddr address, u32 size);

} // namespace Tegra