OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "GrVkResourceProvider.h" | 8 #include "GrVkResourceProvider.h" |
9 | 9 |
10 #include "GrTextureParams.h" | 10 #include "GrTextureParams.h" |
11 #include "GrVkCommandBuffer.h" | 11 #include "GrVkCommandBuffer.h" |
12 #include "GrVkPipeline.h" | 12 #include "GrVkPipeline.h" |
13 #include "GrVkRenderTarget.h" | 13 #include "GrVkRenderTarget.h" |
14 #include "GrVkSampler.h" | 14 #include "GrVkSampler.h" |
15 #include "GrVkUtil.h" | 15 #include "GrVkUtil.h" |
16 | 16 |
17 #ifdef SK_TRACE_VK_RESOURCES | 17 #ifdef SK_TRACE_VK_RESOURCES |
18 SkTDynamicHash<GrVkResource, uint32_t> GrVkResource::fTrace; | 18 GrVkResource::Trace GrVkResource::fTrace; |
19 SkRandom GrVkResource::fRandom; | 19 SkRandom GrVkResource::fRandom; |
20 #endif | 20 #endif |
21 | 21 |
22 GrVkResourceProvider::GrVkResourceProvider(GrVkGpu* gpu) | 22 GrVkResourceProvider::GrVkResourceProvider(GrVkGpu* gpu) |
23 : fGpu(gpu) | 23 : fGpu(gpu) |
24 , fPipelineCache(VK_NULL_HANDLE) | 24 , fPipelineCache(VK_NULL_HANDLE) |
25 , fUniformDescPool(nullptr) | 25 , fUniformDescPool(nullptr) |
26 , fCurrentUniformDescCount(0) { | 26 , fCurrentUniformDescCount(0) { |
27 fPipelineStateCache = new PipelineStateCache(gpu); | 27 fPipelineStateCache = new PipelineStateCache(gpu); |
28 } | 28 } |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 GR_VK_CALL(fGpu->vkInterface(), DestroyPipelineCache(fGpu->device(), fPipeli
neCache, nullptr)); | 307 GR_VK_CALL(fGpu->vkInterface(), DestroyPipelineCache(fGpu->device(), fPipeli
neCache, nullptr)); |
308 fPipelineCache = VK_NULL_HANDLE; | 308 fPipelineCache = VK_NULL_HANDLE; |
309 | 309 |
310 if (fUniformDescLayout) { | 310 if (fUniformDescLayout) { |
311 GR_VK_CALL(fGpu->vkInterface(), DestroyDescriptorSetLayout(fGpu->device(
), | 311 GR_VK_CALL(fGpu->vkInterface(), DestroyDescriptorSetLayout(fGpu->device(
), |
312 fUniformDescL
ayout, | 312 fUniformDescL
ayout, |
313 nullptr)); | 313 nullptr)); |
314 fUniformDescLayout = VK_NULL_HANDLE; | 314 fUniformDescLayout = VK_NULL_HANDLE; |
315 } | 315 } |
316 fUniformDescPool->unref(fGpu); | 316 fUniformDescPool->unref(fGpu); |
317 | |
318 #ifdef SK_TRACE_VK_RESOURCES | |
319 if (GrVkResource::fTrace.count()) { | |
320 SkTDynamicHash<GrVkResource, uint32_t>::Iter iter(&GrVkResource::fTrace)
; | |
321 for (; !iter.done(); ++iter) { | |
322 (*iter).dumpInfo(); | |
323 } | |
324 } | |
325 SkASSERT(0 == GrVkResource::fTrace.count()); | |
326 #endif | |
327 } | 317 } |
328 | 318 |
329 void GrVkResourceProvider::abandonResources() { | 319 void GrVkResourceProvider::abandonResources() { |
330 // release our active command buffers | 320 // release our active command buffers |
331 for (int i = 0; i < fActiveCommandBuffers.count(); ++i) { | 321 for (int i = 0; i < fActiveCommandBuffers.count(); ++i) { |
332 SkASSERT(fActiveCommandBuffers[i]->finished(fGpu)); | 322 SkASSERT(fActiveCommandBuffers[i]->finished(fGpu)); |
333 SkASSERT(fActiveCommandBuffers[i]->unique()); | 323 SkASSERT(fActiveCommandBuffers[i]->unique()); |
334 fActiveCommandBuffers[i]->unrefAndAbandon(); | 324 fActiveCommandBuffers[i]->unrefAndAbandon(); |
335 } | 325 } |
336 fActiveCommandBuffers.reset(); | 326 fActiveCommandBuffers.reset(); |
(...skipping 24 matching lines...) Expand all Loading... |
361 (*iter).unrefAndAbandon(); | 351 (*iter).unrefAndAbandon(); |
362 } | 352 } |
363 fSamplers.reset(); | 353 fSamplers.reset(); |
364 | 354 |
365 fPipelineStateCache->abandon(); | 355 fPipelineStateCache->abandon(); |
366 | 356 |
367 fPipelineCache = VK_NULL_HANDLE; | 357 fPipelineCache = VK_NULL_HANDLE; |
368 | 358 |
369 fUniformDescLayout = VK_NULL_HANDLE; | 359 fUniformDescLayout = VK_NULL_HANDLE; |
370 fUniformDescPool->unrefAndAbandon(); | 360 fUniformDescPool->unrefAndAbandon(); |
371 | |
372 #ifdef SK_TRACE_VK_RESOURCES | |
373 if (GrVkResource::fTrace.count()) { | |
374 SkTDynamicHash<GrVkResource, uint32_t>::Iter iter(&GrVkResource::fTrace)
; | |
375 for (; !iter.done(); ++iter) { | |
376 (*iter).dumpInfo(); | |
377 } | |
378 } | |
379 SkASSERT(0 == GrVkResource::fTrace.count()); | |
380 #endif | |
381 } | 361 } |
382 | 362 |
383 //////////////////////////////////////////////////////////////////////////////// | 363 //////////////////////////////////////////////////////////////////////////////// |
384 | 364 |
385 GrVkResourceProvider::CompatibleRenderPassSet::CompatibleRenderPassSet( | 365 GrVkResourceProvider::CompatibleRenderPassSet::CompatibleRenderPassSet( |
386 const GrVkG
pu* gpu, | 366 const GrVkG
pu* gpu, |
387 const GrVkR
enderTarget& target) | 367 const GrVkR
enderTarget& target) |
388 : fLastReturnedIndex(0) { | 368 : fLastReturnedIndex(0) { |
389 fRenderPasses.emplace_back(new GrVkRenderPass()); | 369 fRenderPasses.emplace_back(new GrVkRenderPass()); |
390 fRenderPasses[0]->initSimple(gpu, target); | 370 fRenderPasses[0]->initSimple(gpu, target); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 } | 406 } |
427 | 407 |
428 void GrVkResourceProvider::CompatibleRenderPassSet::abandonResources() { | 408 void GrVkResourceProvider::CompatibleRenderPassSet::abandonResources() { |
429 for (int i = 0; i < fRenderPasses.count(); ++i) { | 409 for (int i = 0; i < fRenderPasses.count(); ++i) { |
430 if (fRenderPasses[i]) { | 410 if (fRenderPasses[i]) { |
431 fRenderPasses[i]->unrefAndAbandon(); | 411 fRenderPasses[i]->unrefAndAbandon(); |
432 fRenderPasses[i] = nullptr; | 412 fRenderPasses[i] = nullptr; |
433 } | 413 } |
434 } | 414 } |
435 } | 415 } |
OLD | NEW |