31 namespace visualization {
60 "gaussian_radix_sort_histograms",
61 "gaussian_radix_sort_scatter",
62 "gaussian_compute_dispatch_args",
63 "gaussian_depth_merge",
67 "kGsShaderNames must match ComputeProgramId::kCount");
84 "RadixSortParams must be 16 bytes to match GLSL layout");
139 const char* label =
nullptr) = 0;
144 const char* label =
nullptr) = 0;
149 const char* label =
nullptr) {
154 const char* label =
nullptr) {
199 const char* label =
nullptr) = 0;
204 const char* label =
nullptr) = 0;
210 const char* label =
nullptr) = 0;
218 std::vector<float>& out) {
232 std::vector<std::uint16_t>& out) {
291 : ctx_(ctx), kind_(kind) {
337 const char* label =
nullptr)
338 : ctx_(ctx), label_(label) {
354 [[nodiscard]]
bool ok()
const {
return ok_; }
359 if (ok_) ctx_.
BindUBO(binding, buf);
372 if (ok_) ctx_.
BindSSBO(binding, buf);
413 #if !defined(__APPLE__)
416 #if defined(__APPLE__)
417 [[nodiscard]] std::unique_ptr<GaussianSplatGpuContext>
419 std::uintptr_t command_queue_handle);
Definition: ComputeGPU.h:130
virtual void DestroyBuffer(std::uintptr_t buf)=0
virtual void EndCompositePass()
Definition: ComputeGPU.h:265
virtual std::uintptr_t ResizeBuffer(std::uintptr_t buf, std::size_t new_size, const char *label=nullptr)=0
Returns a valid handle (may replace buf when the API reallocates).
virtual void DestroyTexture(std::uintptr_t tex)=0
virtual void BeginCompositePass()
Definition: ComputeGPU.h:264
virtual ~GaussianSplatGpuContext()=default
virtual void BindUBORange(std::uint32_t binding, std::uintptr_t buf, std::size_t offset, std::size_t range_size)=0
virtual std::uintptr_t ResizeTexture2DR32F(std::uintptr_t tex, std::uint32_t width, std::uint32_t height, const char *label=nullptr)=0
virtual void PopDebugGroup()
Definition: ComputeGPU.h:277
virtual bool DownloadBuffer(std::uintptr_t buf, void *dst, std::size_t size, std::size_t offset)
Definition: ComputeGPU.h:161
virtual void BindSamplerTexture(std::uint32_t unit, std::uintptr_t tex, std::uint32_t width, std::uint32_t height)=0
virtual void UploadBuffer(std::uintptr_t buf, const void *data, std::size_t size, std::size_t offset)=0
virtual void BindSSBO(std::uint32_t binding, std::uintptr_t buf)=0
virtual void Dispatch(std::uint32_t groups_x, std::uint32_t groups_y, std::uint32_t groups_z)=0
virtual std::uintptr_t ResizePrivateBuffer(std::uintptr_t buf, std::size_t new_size, const char *label=nullptr)
Definition: ComputeGPU.h:152
virtual void ClearBufferUInt32Zero(std::uintptr_t buf)=0
virtual bool DownloadTextureR32F(std::uintptr_t tex, std::uint32_t width, std::uint32_t height, std::vector< float > &out)
Definition: ComputeGPU.h:215
virtual std::uintptr_t CreateTexture2DR32F(std::uint32_t width, std::uint32_t height, const char *label=nullptr)=0
virtual void BindUBO(std::uint32_t binding, std::uintptr_t buf)=0
virtual void WaitForGeometryPass()
Definition: ComputeGPU.h:272
virtual bool EnsureProgramsLoaded()=0
Load all compute programs (lazy, idempotent).
virtual void DispatchIndirect(std::uintptr_t indirect_buf, std::size_t byte_offset)=0
virtual std::uintptr_t CreateBuffer(std::size_t size, const char *label=nullptr)=0
virtual void FullBarrier()=0
virtual std::uint32_t GetMaxComputeWorkGroupCount() const
Definition: ComputeGPU.h:194
virtual void BindImage(std::uint32_t binding, std::uintptr_t tex, std::uint32_t width, std::uint32_t height, ImageFormat fmt)=0
Bind a write image at the given unit with the specified format.
virtual void FinishGpuWork()=0
virtual void BeginGeometryPass()
Definition: ComputeGPU.h:262
virtual void EndGeometryPass()
Definition: ComputeGPU.h:263
virtual std::uintptr_t ResizeTexture2DR16UI(std::uintptr_t tex, std::uint32_t width, std::uint32_t height, const char *label=nullptr)=0
Create or resize an R16UI texture for merged-depth CPU readback.
virtual bool DownloadTextureR16UI(std::uintptr_t tex, std::uint32_t width, std::uint32_t height, std::vector< std::uint16_t > &out)
Definition: ComputeGPU.h:229
virtual void UseProgram(ComputeProgramId id)=0
virtual std::uintptr_t CreatePrivateBuffer(std::size_t size, const char *label=nullptr)
Definition: ComputeGPU.h:148
virtual void PushDebugGroup(const char *)
Definition: ComputeGPU.h:276
virtual bool WasLastSubmitSuccessful() const
Returns whether the most recently submitted GPU work succeeded.
Definition: ComputeGPU.h:258
Definition: ComputeGPU.h:286
GpuComputeFrame(const GpuComputeFrame &)=delete
~GpuComputeFrame()
Definition: ComputeGPU.h:298
GpuComputeFrame(GaussianSplatGpuContext &ctx, Kind kind)
Definition: ComputeGPU.h:290
GpuComputeFrame & operator=(const GpuComputeFrame &)=delete
Kind
Definition: ComputeGPU.h:288
@ kComposite
Definition: ComputeGPU.h:288
@ kGeometry
Definition: ComputeGPU.h:288
void End()
Explicitly end the frame early (dtor becomes a no-op).
Definition: ComputeGPU.h:304
Definition: ComputeGPU.h:333
GpuComputePass(const GpuComputePass &)=delete
GpuComputePass & operator=(const GpuComputePass &)=delete
GpuComputePass & UBORange(std::uint32_t binding, std::uintptr_t buf, std::size_t offset, std::size_t size)
Definition: ComputeGPU.h:363
GpuComputePass & Image(std::uint32_t binding, std::uintptr_t tex, std::uint32_t w, std::uint32_t h, ImageFormat fmt)
Definition: ComputeGPU.h:376
void DispatchIndirect(std::uintptr_t buf, std::size_t byte_offset)
Definition: ComputeGPU.h:399
~GpuComputePass()
Definition: ComputeGPU.h:346
GpuComputePass(GaussianSplatGpuContext &ctx, ComputeProgramId pid, const char *label=nullptr)
Definition: ComputeGPU.h:335
void Dispatch(std::uint32_t gx, std::uint32_t gy, std::uint32_t gz)
Definition: ComputeGPU.h:395
bool ok() const
Returns false only when EnsureProgramsLoaded() failed (device error).
Definition: ComputeGPU.h:354
GpuComputePass & SSBO(std::uint32_t binding, std::uintptr_t buf)
Definition: ComputeGPU.h:371
GpuComputePass & UBO(std::uint32_t binding, std::uintptr_t buf)
Definition: ComputeGPU.h:358
GpuComputePass & Sampler(std::uint32_t unit, std::uintptr_t tex, std::uint32_t w, std::uint32_t h)
Definition: ComputeGPU.h:385
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle uint32_t
Definition: K4aPlugin.cpp:548
const char const char value recording_handle imu_sample void
Definition: K4aPlugin.cpp:250
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle device_handle
Definition: K4aPlugin.cpp:392
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle image_handle timestamp_usec white_balance image_handle k4a_device_configuration_t config device_handle char size_t serial_number_size bool int32_t int32_t int32_t int32_t k4a_color_control_mode_t default_mode value const const k4a_calibration_t calibration char size_t
Definition: K4aPlugin.cpp:719
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c int
Definition: K4aPlugin.cpp:474
const char const char value recording_handle imu_sample recording_handle uint8_t data
Definition: K4aPlugin.cpp:269
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample uint64_t
Definition: K4aPlugin.cpp:343
ImageFormat
Format selector for GaussianSplatGpuContext::BindImage().
Definition: ComputeGPU.h:53
ComputeProgramId
Definition: ComputeGPU.h:40
constexpr const char * kGsShaderNames[]
Definition: ComputeGPU.h:57
Definition: PinholeCameraIntrinsic.cpp:16
Per-view GPU resource handles (opaque: GL name or MTLBuffer/MTLTexture).
Definition: ComputeGPU.h:87
std::uintptr_t sh_buf
Definition: ComputeGPU.h:93
std::uintptr_t projected_composite_buf
Definition: ComputeGPU.h:96
std::uint32_t cached_splat_count
Definition: ComputeGPU.h:120
std::uintptr_t scales_buf
Definition: ComputeGPU.h:90
std::uintptr_t dc_opacity_buf
Definition: ComputeGPU.h:92
std::uintptr_t dispatch_args_buf
Definition: ComputeGPU.h:102
std::uintptr_t sort_keys_buf[2]
Definition: ComputeGPU.h:105
std::uintptr_t composite_depth_tex
GS composite depth output (image binding 1); not the shared scene depth.
Definition: ComputeGPU.h:112
std::uintptr_t tile_counts_buf
Definition: ComputeGPU.h:99
std::uintptr_t mask_buf
Bit-packed per-splat visibility mask. Bound at binding 15.
Definition: ComputeGPU.h:110
std::uintptr_t rotations_buf
Definition: ComputeGPU.h:91
std::uint64_t cached_scene_id
Definition: ComputeGPU.h:119
std::uintptr_t positions_buf
Definition: ComputeGPU.h:89
std::uintptr_t radix_params_buf
Definition: ComputeGPU.h:108
std::uint32_t warned_gpu_error_flags
Definition: ComputeGPU.h:121
std::uintptr_t merged_depth_u16_tex
Definition: ComputeGPU.h:115
std::uintptr_t sort_values_buf[2]
Definition: ComputeGPU.h:106
std::uintptr_t view_params_buf
Definition: ComputeGPU.h:88
std::uintptr_t counters_buf
GPU error/diagnostic counters (total_entries, error_flags, ...).
Definition: ComputeGPU.h:101
std::uintptr_t histogram_buf
Definition: ComputeGPU.h:107
int final_sort_src
Definition: ComputeGPU.h:118
Definition: ComputeGPU.h:77
std::uint32_t g_num_elements
Definition: ComputeGPU.h:78
std::uint32_t g_shift
Definition: ComputeGPU.h:79
std::uint32_t g_num_workgroups
Definition: ComputeGPU.h:80
std::uint32_t g_num_blocks_per_workgroup
Definition: ComputeGPU.h:81