/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/ThirdParty/Jolt/Compute/DX12/ComputeBufferDX12.h
51 строка
2 KB
Jan Krassnigg
Updated Jolt to version 5.5.0 (#1778)
20 янв 2026, 10:54
Не верифицирован
20 янв 2026, 10:54
c41ee15
Код
Авторство
О чём код?
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) // SPDX-FileCopyrightText: 2025 Jorrit Rouwe // SPDX-License-Identifier: MIT #pragma once #include <Jolt/Compute/ComputeBuffer.h> #ifdef JPH_USE_DX12 #include <Jolt/Compute/DX12/IncludeDX12.h> JPH_NAMESPACE_BEGIN class ComputeSystemDX12; /// Buffer that can be read from / written to by a compute shader class JPH_EXPORT ComputeBufferDX12 final : public ComputeBuffer { public: JPH_OVERRIDE_NEW_DELETE /// Constructor ComputeBufferDX12(ComputeSystemDX12 *inComputeSystem, EType inType, uint64 inSize, uint inStride); bool Initialize(const void *inData); ID3D12Resource * GetResourceCPU() const { return mBufferCPU.Get(); } ID3D12Resource * GetResourceGPU() const { return mBufferGPU.Get(); } ComPtr<ID3D12Resource> ReleaseResourceCPU() const { return std::move(mBufferCPU); } bool Barrier(ID3D12GraphicsCommandList *inCommandList, D3D12_RESOURCE_STATES inTo) const; void RWBarrier(ID3D12GraphicsCommandList *inCommandList); bool SyncCPUToGPU(ID3D12GraphicsCommandList *inCommandList) const; ComputeBufferResult CreateReadBackBuffer() const override; private: virtual void * MapInternal(EMode inMode) override; virtual void UnmapInternal() override; ComputeSystemDX12 * mComputeSystem; mutable ComPtr<ID3D12Resource> mBufferCPU; ComPtr<ID3D12Resource> mBufferGPU; mutable bool mNeedsSync = false; ///< If this buffer needs to be synced from CPU to GPU mutable D3D12_RESOURCE_STATES mCurrentState = D3D12_RESOURCE_STATE_COPY_DEST; ///< State of the GPU buffer so we can do proper barriers }; JPH_NAMESPACE_END #endif // JPH_USE_DX12