| 263 | } |
| 264 | |
| 265 | MapResult Buffer::Map() |
| 266 | { |
| 267 | Assert_(Initialized()); |
| 268 | Assert_(Dynamic); |
| 269 | |
| 270 | if(Lifetime == BufferLifetime::Persistent) |
| 271 | { |
| 272 | #if UseAsserts_ |
| 273 | // Make sure that we onlt do this at most once per frame |
| 274 | Assert_(UploadFrame != DX12::CurrentCPUFrame); |
| 275 | UploadFrame = DX12::CurrentCPUFrame; |
| 276 | #endif |
| 277 | CurrBuffer = (CurrBuffer + 1) % DX12::RenderLatency; |
| 278 | |
| 279 | MapResult result; |
| 280 | result.ResourceOffset = CurrBuffer * Size; |
| 281 | result.CPUAddress = CPUAddress + CurrBuffer * Size; |
| 282 | result.GPUAddress = GPUAddress + CurrBuffer * Size; |
| 283 | result.Resource = Resource; |
| 284 | return result; |
| 285 | } |
| 286 | else |
| 287 | { |
| 288 | Assert_(Lifetime == BufferLifetime::Temporary); |
| 289 | |
| 290 | #if UseAsserts_ |
| 291 | UploadFrame = DX12::CurrentCPUFrame; |
| 292 | #endif |
| 293 | |
| 294 | return DX12::AcquireTempBufferMem(Size, Alignment); |
| 295 | } |
| 296 | } |
| 297 | |
| 298 | MapResult Buffer::MapAndSetData(const void* data, uint64 dataSize) |
| 299 | { |
no test coverage detected