| 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 "GrVkPipeline.h" | 8 #include "GrVkPipeline.h" | 
| 9 | 9 | 
| 10 #include "GrGeometryProcessor.h" | 10 #include "GrGeometryProcessor.h" | 
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 196 | 196 | 
| 197     viewportInfo->viewportCount = 1; | 197     viewportInfo->viewportCount = 1; | 
| 198     viewportInfo->pViewports = nullptr; // This is set dynamically | 198     viewportInfo->pViewports = nullptr; // This is set dynamically | 
| 199 | 199 | 
| 200     viewportInfo->scissorCount = 1; | 200     viewportInfo->scissorCount = 1; | 
| 201     viewportInfo->pScissors = nullptr; // This is set dynamically | 201     viewportInfo->pScissors = nullptr; // This is set dynamically | 
| 202 | 202 | 
| 203     SkASSERT(viewportInfo->viewportCount == viewportInfo->scissorCount); | 203     SkASSERT(viewportInfo->viewportCount == viewportInfo->scissorCount); | 
| 204 } | 204 } | 
| 205 | 205 | 
| 206 void setup_multisample_state(const GrPipeline& pipeline, | 206 void setup_multisample_state(const GrPipeline& pipeline, | 
| 207                              const GrPrimitiveProcessor& primProc, | 207                              const GrPrimitiveProcessor& primProc, | 
| 208                              const GrCaps* caps, | 208                              const GrCaps* caps, | 
| 209                              VkPipelineMultisampleStateCreateInfo* multisampleIn
     fo) { | 209                              VkPipelineMultisampleStateCreateInfo* multisampleIn
     fo) { | 
| 210     memset(multisampleInfo, 0, sizeof(VkPipelineMultisampleStateCreateInfo)); | 210     memset(multisampleInfo, 0, sizeof(VkPipelineMultisampleStateCreateInfo)); | 
| 211     multisampleInfo->sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE
     _INFO; | 211     multisampleInfo->sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE
     _INFO; | 
| 212     multisampleInfo->pNext = nullptr; | 212     multisampleInfo->pNext = nullptr; | 
| 213     multisampleInfo->flags = 0; | 213     multisampleInfo->flags = 0; | 
| 214     int numSamples = pipeline.getRenderTarget()->numColorSamples(); | 214     int numSamples = pipeline.getRenderTarget()->numColorSamples(); | 
| 215     SkAssertResult(GrSampleCountToVkSampleCount(numSamples, | 215     SkAssertResult(GrSampleCountToVkSampleCount(numSamples, | 
| 216                    &multisampleInfo->rasterizationSamples)); | 216                    &multisampleInfo->rasterizationSamples)); | 
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 462     pipelineCreateInfo.pColorBlendState = &colorBlendInfo; | 462     pipelineCreateInfo.pColorBlendState = &colorBlendInfo; | 
| 463     pipelineCreateInfo.pDynamicState = &dynamicInfo; | 463     pipelineCreateInfo.pDynamicState = &dynamicInfo; | 
| 464     pipelineCreateInfo.layout = layout; | 464     pipelineCreateInfo.layout = layout; | 
| 465     pipelineCreateInfo.renderPass = renderPass.vkRenderPass(); | 465     pipelineCreateInfo.renderPass = renderPass.vkRenderPass(); | 
| 466     pipelineCreateInfo.subpass = 0; | 466     pipelineCreateInfo.subpass = 0; | 
| 467     pipelineCreateInfo.basePipelineHandle = VK_NULL_HANDLE; | 467     pipelineCreateInfo.basePipelineHandle = VK_NULL_HANDLE; | 
| 468     pipelineCreateInfo.basePipelineIndex = -1; | 468     pipelineCreateInfo.basePipelineIndex = -1; | 
| 469 | 469 | 
| 470     VkPipeline vkPipeline; | 470     VkPipeline vkPipeline; | 
| 471     VkResult err = GR_VK_CALL(gpu->vkInterface(), CreateGraphicsPipelines(gpu->d
     evice(), | 471     VkResult err = GR_VK_CALL(gpu->vkInterface(), CreateGraphicsPipelines(gpu->d
     evice(), | 
| 472                                                                           cache,
      1, | 472                                                                           cache,
      1, | 
| 473                                                                           &pipel
     ineCreateInfo, | 473                                                                           &pipel
     ineCreateInfo, | 
| 474                                                                           nullpt
     r, &vkPipeline)); | 474                                                                           nullpt
     r, &vkPipeline)); | 
| 475     if (err) { | 475     if (err) { | 
| 476         return nullptr; | 476         return nullptr; | 
| 477     } | 477     } | 
| 478 | 478 | 
| 479     return new GrVkPipeline(vkPipeline); | 479     return new GrVkPipeline(vkPipeline); | 
| 480 } | 480 } | 
| 481 | 481 | 
| 482 void GrVkPipeline::freeGPUData(const GrVkGpu* gpu) const { | 482 void GrVkPipeline::freeGPUData(const GrVkGpu* gpu) const { | 
| 483     GR_VK_CALL(gpu->vkInterface(), DestroyPipeline(gpu->device(), fPipeline, nul
     lptr)); | 483     GR_VK_CALL(gpu->vkInterface(), DestroyPipeline(gpu->device(), fPipeline, nul
     lptr)); | 
| 484 } | 484 } | 
| 485 | 485 | 
| 486 void set_dynamic_scissor_state(GrVkGpu* gpu, | 486 void set_dynamic_scissor_state(GrVkGpu* gpu, | 
| 487                                GrVkCommandBuffer* cmdBuffer, | 487                                GrVkCommandBuffer* cmdBuffer, | 
| 488                                const GrPipeline& pipeline, | 488                                const GrPipeline& pipeline, | 
| 489                                const GrRenderTarget& target) { | 489                                const GrRenderTarget& target) { | 
| 490     // We always use one scissor and if it is disabled we just make it the size 
     of the RT | 490     // We always use one scissor and if it is disabled we just make it the size 
     of the RT | 
| 491     const GrScissorState& scissorState = pipeline.getScissorState(); | 491     const GrScissorState& scissorState = pipeline.getScissorState(); | 
| 492     VkRect2D scissor; | 492     VkRect2D scissor; | 
| 493     if (scissorState.enabled() && | 493     if (scissorState.enabled() && | 
| 494         !scissorState.rect().contains(0, 0, target.width(), target.height())) { | 494         !scissorState.rect().contains(0, 0, target.width(), target.height())) { | 
| 495         // This all assumes the scissorState has previously been clipped to the 
     device space render | 495         // This all assumes the scissorState has previously been clipped to the 
     device space render | 
| 496         // target. | 496         // target. | 
| 497         scissor.offset.x = scissorState.rect().fLeft; | 497         scissor.offset.x = scissorState.rect().fLeft; | 
| 498         scissor.extent.width = scissorState.rect().width(); | 498         scissor.extent.width = scissorState.rect().width(); | 
| 499         if (kTopLeft_GrSurfaceOrigin == target.origin()) { | 499         if (kTopLeft_GrSurfaceOrigin == target.origin()) { | 
| 500             scissor.offset.y = scissorState.rect().fTop; | 500             scissor.offset.y = scissorState.rect().fTop; | 
| 501         } else { | 501         } else { | 
| 502             SkASSERT(kBottomLeft_GrSurfaceOrigin == target.origin()); | 502             SkASSERT(kBottomLeft_GrSurfaceOrigin == target.origin()); | 
| 503             scissor.offset.y = target.height() - scissorState.rect().fBottom; | 503             scissor.offset.y = target.height() - scissorState.rect().fBottom; | 
| 504         } | 504         } | 
| 505         scissor.extent.height = scissorState.rect().height(); | 505         scissor.extent.height = scissorState.rect().height(); | 
| 506 | 506 | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 548 } | 548 } | 
| 549 | 549 | 
| 550 void GrVkPipeline::SetDynamicState(GrVkGpu* gpu, | 550 void GrVkPipeline::SetDynamicState(GrVkGpu* gpu, | 
| 551                                    GrVkCommandBuffer* cmdBuffer, | 551                                    GrVkCommandBuffer* cmdBuffer, | 
| 552                                    const GrPipeline& pipeline) { | 552                                    const GrPipeline& pipeline) { | 
| 553     const GrRenderTarget& target = *pipeline.getRenderTarget(); | 553     const GrRenderTarget& target = *pipeline.getRenderTarget(); | 
| 554     set_dynamic_scissor_state(gpu, cmdBuffer, pipeline, target); | 554     set_dynamic_scissor_state(gpu, cmdBuffer, pipeline, target); | 
| 555     set_dynamic_viewport_state(gpu, cmdBuffer, target); | 555     set_dynamic_viewport_state(gpu, cmdBuffer, target); | 
| 556     set_dynamic_blend_constant_state(gpu, cmdBuffer, pipeline); | 556     set_dynamic_blend_constant_state(gpu, cmdBuffer, pipeline); | 
| 557 } | 557 } | 
| OLD | NEW | 
|---|