Bicameral Engine
GPU-resident engine for a magic-research open-world game
Loading...
Searching...
No Matches
gpu_multires.cpp File Reference
#include "sim/gpu_multires.h"
#include <limits>
#include <utility>
#include "common/multires_activity.hlsli"
#include "core/log.h"
#include "gpu/resources.h"
#include "sim/gpu_multires_implicit.h"
Include dependency graph for gpu_multires.cpp:

Go to the source code of this file.

Classes

struct  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::RefineRecord
struct  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ActivityHeader
struct  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ObserverRecord
struct  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ChainRecord

Namespaces

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

Enumerations

enum  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::Entry : uint8_t { bicameral::sim::anonymous_namespace{gpu_multires.cpp}::EntryRefine , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::EntryCoarsenRequest , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::EntryPullBack , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::EntryRemoveShadow }
enum  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ActivityEntry : uint8_t { bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ActivityEntrySeed , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ActivityEntryObserver , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ActivityEntryExpand }
enum  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::TreePass : uint8_t {
  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassResolve , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassSettle , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassAllocate , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassRelease ,
  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassClearIndex , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassFillIndex , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassQuiet , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassExpand ,
  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassFoldCheck , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassFold , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassFractions , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::PassQuietCheck
}
enum  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ConductPass : uint8_t {
  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ConductPassBegin , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ConductPassMark , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ConductPassPrepare , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ConductPassFlows ,
  bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ConductPassApply , bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ConductPassEnd
}

Functions

uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ImplicitFlags (const MultiresStepOptions &options)
uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::SubcycleFlags (uint32_t flags, const MultiresStepOptions &options, uint32_t substep)
uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::GroupsFor (uint32_t threads, uint32_t perGroup)
template<typename T>
ComPtr< ID3D12Resource > bicameral::sim::anonymous_namespace{gpu_multires.cpp}::CreateFilledUpload (ID3D12Device *device, std::span< const T > data)
bool bicameral::sim::anonymous_namespace{gpu_multires.cpp}::WriteUpload (ID3D12Resource *upload, std::span< const std::byte > bytes)
std::expected< ComPtr< ID3D12PipelineState >, std::string > bicameral::sim::anonymous_namespace{gpu_multires.cpp}::LoadComputePipeline (ID3D12Device5 *device, ID3D12RootSignature *rootSignature, const char *path)
void bicameral::sim::anonymous_namespace{gpu_multires.cpp}::UavBarrier (ID3D12GraphicsCommandList10 *list)

Variables

constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ROOT_CONSTANT_COUNT = 25
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::EXTERNAL_VIEW_FIRST = 4
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::UAV_COUNT = 14
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ACTIVITY_VIEW = 13
constexpr gpu::RootSignatureLayout bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ROOT_LAYOUT
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::TREE_THREADS = 64
constexpr std::array< const char *, 12 > bicameral::sim::anonymous_namespace{gpu_multires.cpp}::TREE_SHADERS
constexpr std::array< const char *, 6 > bicameral::sim::anonymous_namespace{gpu_multires.cpp}::CONDUCT_SHADERS
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::STEP_FLAG_CONDUCTION = 1
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::STEP_FLAG_LISTED = 2
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::STEP_FLAG_SUBSTEP_WAKE = 4
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::STEP_FLAG_WAKE_SEEDS = 16
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::STEP_FLAG_IMPLICIT = 8
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::STEP_IMPLICIT_GAP_SHIFT = 5
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::MAX_GPU_IMPLICIT_GAP = 8
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::STEP_FLAG_BITS = 0xFF
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::STEP_SUBSTEP_SHIFT = 8
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::STEP_GAP_SHIFT = 14
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::STEP_BASE_SHIFT = 16
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::WAKE_THREADS = 64
constexpr uint64_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::CONDUCT_MARK_BYTES = 16 * sizeof(uint32_t)
constexpr uint64_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::CONDUCT_DELTA_BYTES = 16
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::GRAPH_INPUT_REFINE_HEADER = 0
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::GRAPH_INPUT_COARSEN_HEADER = 32
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::REFINE_RECORD_BYTES = 24
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::GRAPH_INPUT_BYTES = 64 + ((REFINE_RECORD_BYTES + 4) * (MR_MAX_REQUESTS + 1))
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::GRAPH_INPUT_EXPAND_HEADER = (GRAPH_INPUT_BYTES + 15) & ~15u
constexpr std::array< uint32_t, 4 > bicameral::sim::anonymous_namespace{gpu_multires.cpp}::GRAPH_INPUT_CONDUCT_HEADERS
constexpr uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::GRAPH_INPUT_EXPAND_RECORDS = GRAPH_INPUT_EXPAND_HEADER + 160
constexpr uint64_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ACTIVITY_EMPTY_BYTES = sizeof(ActivityHeader) + sizeof(uint32_t)
constexpr uint64_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ACTIVITY_EMPTY_STRIDE = 64
constexpr uint64_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ACTIVITY_FIRST_OFFSET = 2 * ACTIVITY_EMPTY_STRIDE
constexpr uint64_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::REQUEST_UPLOAD_BYTES = (uint64_t{MR_MAX_REQUESTS} * sizeof(MrRequest)) + 256