| 250 | } |
| 251 | |
| 252 | bool ExecuteBufferLoadingTasks( |
| 253 | nvrhi::IDevice* device, |
| 254 | nvrhi::ICommandList* commandList, |
| 255 | ntc::IContext* context, |
| 256 | ntc::IStream* inputFile, |
| 257 | GDeflateFeatures* gdeflateFeatures, |
| 258 | std::vector<BufferLoadingTask>& tasks, |
| 259 | nvrhi::BufferHandle& finalBuffer, |
| 260 | size_t stagingBufferSize, |
| 261 | size_t tempBufferSize, |
| 262 | size_t finalBufferSize) |
| 263 | { |
| 264 | nvrhi::BufferHandle stagingBuffer; |
| 265 | MappedBuffer<uint8_t> mappedStagingBuffer(device); |
| 266 | |
| 267 | nvrhi::BufferHandle tempBuffer; |
| 268 | |
| 269 | if (stagingBufferSize) |
| 270 | { |
| 271 | nvrhi::BufferDesc stagingBufferDesc = nvrhi::BufferDesc() |
| 272 | .setByteSize(stagingBufferSize) |
| 273 | .setDebugName("BC7 Mode Staging Buffer") |
| 274 | .setCpuAccess(nvrhi::CpuAccessMode::Write); |
| 275 | stagingBuffer = device->createBuffer(stagingBufferDesc); |
| 276 | if (!stagingBuffer) |
| 277 | return false; |
| 278 | if (!mappedStagingBuffer.Map(stagingBuffer, nvrhi::CpuAccessMode::Write)) |
| 279 | return false; |
| 280 | } |
| 281 | |
| 282 | if (tempBufferSize) |
| 283 | { |
| 284 | nvrhi::BufferDesc tempBufferDesc = nvrhi::BufferDesc() |
| 285 | .setByteSize(tempBufferSize) |
| 286 | .setDebugName("BC7 Mode Temp Buffer") |
| 287 | .setCanHaveRawViews(true) |
| 288 | .setCanHaveUAVs(true) |
| 289 | .enableAutomaticStateTracking(nvrhi::ResourceStates::CopyDest); |
| 290 | tempBuffer = device->createBuffer(tempBufferDesc); |
| 291 | if (!tempBuffer) |
| 292 | return false; |
| 293 | } |
| 294 | |
| 295 | if (finalBufferSize) |
| 296 | { |
| 297 | nvrhi::BufferDesc finalBufferDesc = nvrhi::BufferDesc() |
| 298 | .setByteSize(finalBufferSize) |
| 299 | .setDebugName("BC7 Mode Buffer") |
| 300 | .setCanHaveRawViews(true) |
| 301 | .setCanHaveUAVs(true) |
| 302 | .enableAutomaticStateTracking(nvrhi::ResourceStates::ShaderResource); |
| 303 | finalBuffer = device->createBuffer(finalBufferDesc); |
| 304 | if (!finalBuffer) |
| 305 | return false; |
| 306 | } |
| 307 | |
| 308 | bool anyDStorageTasks = false; |
| 309 | commandList->open(); |
no test coverage detected