Bicameral Engine
GPU-resident engine for a magic-research open-world game
Loading...
Searching...
No Matches
gpu_implicit_levels.cpp File Reference
#include "sim/gpu_implicit_levels.h"
#include <algorithm>
#include <array>
#include <bit>
#include <cstring>
#include <format>
#include <span>
#include <string_view>
#include <utility>
#include "gpu/resources.h"
Include dependency graph for gpu_implicit_levels.cpp:

Go to the source code of this file.

Namespaces

namespace  bicameral
namespace  bicameral::sim
namespace  bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}

Enumerations

enum  bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::Pass : uint8_t {
  bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassClear , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassCells , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassCellLinks , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassNodeHash ,
  bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassNodeFirst , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassParentScanLocal , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassParentScanGroups , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassParents ,
  bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassLinkHash , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassCount , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassRowScanLocal , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassRowScanGroups ,
  bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassPlace , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassSort , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassAddCoefficients , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassCoarseNodes ,
  bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassFinish , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassRoundEnd , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassTail , bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PassTotal
}

Functions

uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::Groups (uint64_t threads)
uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::ScanGroups (uint64_t count)
void bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::GlobalUavBarrier (ID3D12GraphicsCommandList *list)
void bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::CopyToReadback (ID3D12GraphicsCommandList *list, ID3D12Resource *source, ID3D12Resource *readback, uint64_t bytes)
template<typename T>
std::vector< T > bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::Slice (const std::vector< std::byte > &bytes, uint32_t count)
uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::DepthWord (uint32_t kind, uint32_t depth)

Variables

constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::THREADS = 64
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::SCAN_THREADS = 1024
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::UAV_COUNT = 7
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::ROOT_CONSTANT_COUNT = 13
constexpr gpu::RootSignatureLayout bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::ROOT_LAYOUT
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::DEPTH_BASE = 16
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::DEPTH_STRIDE = 72
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::HEADER_WORDS = DEPTH_BASE + (8 * DEPTH_STRIDE)
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::LEVEL_COUNT = 0
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::OVERFLOW_WORD = 1
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::NODE_OFFSET = 0
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::NODE_COUNT = 1
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::LINK_OFFSET = 2
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::LINK_COUNT = 3
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::NODE_WORDS = 16 + 10
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::LINK_WORDS = 10
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::MAX_LEVELS = 64
constexpr std::array< std::string_view, PassTotal > bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::PASS_NAMES
constexpr std::array< Pass, 14 > bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::ROUND_PASSES