| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 "GrVkGpu.h" | 8 #include "GrVkGpu.h" |
| 9 | 9 |
| 10 #include "GrContextOptions.h" | 10 #include "GrContextOptions.h" |
| (...skipping 1322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1333 primitiveType, | 1333 primitiveType, |
| 1334 desc, | 1334 desc, |
| 1335 renderPass); | 1335 renderPass); |
| 1336 if (!program) { | 1336 if (!program) { |
| 1337 return false; | 1337 return false; |
| 1338 } | 1338 } |
| 1339 | 1339 |
| 1340 (*program)->setData(this, primProc, pipeline); | 1340 (*program)->setData(this, primProc, pipeline); |
| 1341 | 1341 |
| 1342 (*program)->bind(this, fCurrentCmdBuffer); | 1342 (*program)->bind(this, fCurrentCmdBuffer); |
| 1343 |
| 1344 GrVkPipeline::SetDynamicState(this, fCurrentCmdBuffer, pipeline); |
| 1345 |
| 1343 return true; | 1346 return true; |
| 1344 } | 1347 } |
| 1345 | 1348 |
| 1346 void GrVkGpu::onDraw(const GrPipeline& pipeline, | 1349 void GrVkGpu::onDraw(const GrPipeline& pipeline, |
| 1347 const GrPrimitiveProcessor& primProc, | 1350 const GrPrimitiveProcessor& primProc, |
| 1348 const GrMesh* meshes, | 1351 const GrMesh* meshes, |
| 1349 int meshCount) { | 1352 int meshCount) { |
| 1350 if (!meshCount) { | 1353 if (!meshCount) { |
| 1351 return; | 1354 return; |
| 1352 } | 1355 } |
| 1353 GrRenderTarget* rt = pipeline.getRenderTarget(); | 1356 GrRenderTarget* rt = pipeline.getRenderTarget(); |
| 1354 GrVkRenderTarget* vkRT = static_cast<GrVkRenderTarget*>(rt); | 1357 GrVkRenderTarget* vkRT = static_cast<GrVkRenderTarget*>(rt); |
| 1355 const GrVkRenderPass* renderPass = vkRT->simpleRenderPass(); | 1358 const GrVkRenderPass* renderPass = vkRT->simpleRenderPass(); |
| 1356 SkASSERT(renderPass); | 1359 SkASSERT(renderPass); |
| 1357 | 1360 |
| 1361 fCurrentCmdBuffer->beginRenderPass(this, renderPass, *vkRT); |
| 1362 |
| 1358 GrVkProgram* program = nullptr; | 1363 GrVkProgram* program = nullptr; |
| 1359 GrPrimitiveType primitiveType = meshes[0].primitiveType(); | 1364 GrPrimitiveType primitiveType = meshes[0].primitiveType(); |
| 1360 if (!this->prepareDrawState(pipeline, primProc, primitiveType, *renderPass,
&program)) { | 1365 if (!this->prepareDrawState(pipeline, primProc, primitiveType, *renderPass,
&program)) { |
| 1361 return; | 1366 return; |
| 1362 } | 1367 } |
| 1363 | 1368 |
| 1364 // Change layout of our render target so it can be used as the color attachm
ent | 1369 // Change layout of our render target so it can be used as the color attachm
ent |
| 1365 VkImageLayout layout = vkRT->currentLayout(); | 1370 VkImageLayout layout = vkRT->currentLayout(); |
| 1366 // Our color attachment is purely a destination and won't be read so don't n
eed to flush or | 1371 // Our color attachment is purely a destination and won't be read so don't n
eed to flush or |
| 1367 // invalidate any caches | 1372 // invalidate any caches |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1390 VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; | 1395 VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; |
| 1391 vkStencil->setImageLayout(this, | 1396 vkStencil->setImageLayout(this, |
| 1392 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIM
AL, | 1397 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIM
AL, |
| 1393 srcAccessMask, | 1398 srcAccessMask, |
| 1394 dstAccessMask, | 1399 dstAccessMask, |
| 1395 srcStageMask, | 1400 srcStageMask, |
| 1396 dstStageMask, | 1401 dstStageMask, |
| 1397 false); | 1402 false); |
| 1398 } | 1403 } |
| 1399 | 1404 |
| 1400 fCurrentCmdBuffer->beginRenderPass(this, renderPass, *vkRT); | |
| 1401 | 1405 |
| 1402 for (int i = 0; i < meshCount; ++i) { | 1406 for (int i = 0; i < meshCount; ++i) { |
| 1403 if (GrXferBarrierType barrierType = pipeline.xferBarrierType(*this->caps
())) { | 1407 if (GrXferBarrierType barrierType = pipeline.xferBarrierType(*this->caps
())) { |
| 1404 this->xferBarrier(pipeline.getRenderTarget(), barrierType); | 1408 this->xferBarrier(pipeline.getRenderTarget(), barrierType); |
| 1405 } | 1409 } |
| 1406 | 1410 |
| 1407 const GrMesh& mesh = meshes[i]; | 1411 const GrMesh& mesh = meshes[i]; |
| 1408 GrMesh::Iterator iter; | 1412 GrMesh::Iterator iter; |
| 1409 const GrNonInstancedMesh* nonIdxMesh = iter.init(mesh); | 1413 const GrNonInstancedMesh* nonIdxMesh = iter.init(mesh); |
| 1410 do { | 1414 do { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1464 int set_a_break_pt_here = 9; | 1468 int set_a_break_pt_here = 9; |
| 1465 aglSwapBuffers(aglGetCurrentContext()); | 1469 aglSwapBuffers(aglGetCurrentContext()); |
| 1466 #elif defined(SK_BUILD_FOR_WIN32) | 1470 #elif defined(SK_BUILD_FOR_WIN32) |
| 1467 SwapBuf(); | 1471 SwapBuf(); |
| 1468 int set_a_break_pt_here = 9; | 1472 int set_a_break_pt_here = 9; |
| 1469 SwapBuf(); | 1473 SwapBuf(); |
| 1470 #endif | 1474 #endif |
| 1471 #endif | 1475 #endif |
| 1472 } | 1476 } |
| 1473 | 1477 |
| OLD | NEW |