mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-22 19:00:14 -05:00
commit
91a45834fd
4 changed files with 14 additions and 7 deletions
|
@ -41,8 +41,8 @@ public:
|
||||||
Fiber(const Fiber&) = delete;
|
Fiber(const Fiber&) = delete;
|
||||||
Fiber& operator=(const Fiber&) = delete;
|
Fiber& operator=(const Fiber&) = delete;
|
||||||
|
|
||||||
Fiber(Fiber&&) = default;
|
Fiber(Fiber&&) = delete;
|
||||||
Fiber& operator=(Fiber&&) = default;
|
Fiber& operator=(Fiber&&) = delete;
|
||||||
|
|
||||||
/// Yields control from Fiber 'from' to Fiber 'to'
|
/// Yields control from Fiber 'from' to Fiber 'to'
|
||||||
/// Fiber 'from' must be the currently running fiber.
|
/// Fiber 'from' must be the currently running fiber.
|
||||||
|
|
|
@ -15,6 +15,14 @@ namespace Common {
|
||||||
*/
|
*/
|
||||||
class SpinLock {
|
class SpinLock {
|
||||||
public:
|
public:
|
||||||
|
SpinLock() = default;
|
||||||
|
|
||||||
|
SpinLock(const SpinLock&) = delete;
|
||||||
|
SpinLock& operator=(const SpinLock&) = delete;
|
||||||
|
|
||||||
|
SpinLock(SpinLock&&) = delete;
|
||||||
|
SpinLock& operator=(SpinLock&&) = delete;
|
||||||
|
|
||||||
void lock();
|
void lock();
|
||||||
void unlock();
|
void unlock();
|
||||||
[[nodiscard]] bool try_lock();
|
[[nodiscard]] bool try_lock();
|
||||||
|
|
|
@ -18,6 +18,8 @@ class System;
|
||||||
|
|
||||||
namespace Tegra {
|
namespace Tegra {
|
||||||
|
|
||||||
|
class GPU;
|
||||||
|
|
||||||
enum class SubmissionMode : u32 {
|
enum class SubmissionMode : u32 {
|
||||||
IncreasingOld = 0,
|
IncreasingOld = 0,
|
||||||
Increasing = 1,
|
Increasing = 1,
|
||||||
|
@ -74,8 +76,7 @@ union CommandHeader {
|
||||||
static_assert(std::is_standard_layout_v<CommandHeader>, "CommandHeader is not standard layout");
|
static_assert(std::is_standard_layout_v<CommandHeader>, "CommandHeader is not standard layout");
|
||||||
static_assert(sizeof(CommandHeader) == sizeof(u32), "CommandHeader has incorrect size!");
|
static_assert(sizeof(CommandHeader) == sizeof(u32), "CommandHeader has incorrect size!");
|
||||||
|
|
||||||
static constexpr CommandHeader BuildCommandHeader(BufferMethods method, u32 arg_count,
|
inline CommandHeader BuildCommandHeader(BufferMethods method, u32 arg_count, SubmissionMode mode) {
|
||||||
SubmissionMode mode) {
|
|
||||||
CommandHeader result{};
|
CommandHeader result{};
|
||||||
result.method.Assign(static_cast<u32>(method));
|
result.method.Assign(static_cast<u32>(method));
|
||||||
result.arg_count.Assign(arg_count);
|
result.arg_count.Assign(arg_count);
|
||||||
|
@ -83,8 +84,6 @@ static constexpr CommandHeader BuildCommandHeader(BufferMethods method, u32 arg_
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
class GPU;
|
|
||||||
|
|
||||||
struct CommandList final {
|
struct CommandList final {
|
||||||
CommandList() = default;
|
CommandList() = default;
|
||||||
explicit CommandList(std::size_t size) : command_lists(size) {}
|
explicit CommandList(std::size_t size) : command_lists(size) {}
|
||||||
|
|
|
@ -273,7 +273,7 @@ public:
|
||||||
BitField<0, 1, FenceOperation> op;
|
BitField<0, 1, FenceOperation> op;
|
||||||
BitField<8, 24, u32> syncpoint_id;
|
BitField<8, 24, u32> syncpoint_id;
|
||||||
|
|
||||||
static constexpr CommandHeader Build(FenceOperation op, u32 syncpoint_id) {
|
static CommandHeader Build(FenceOperation op, u32 syncpoint_id) {
|
||||||
FenceAction result{};
|
FenceAction result{};
|
||||||
result.op.Assign(op);
|
result.op.Assign(op);
|
||||||
result.syncpoint_id.Assign(syncpoint_id);
|
result.syncpoint_id.Assign(syncpoint_id);
|
||||||
|
|
Loading…
Reference in a new issue