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 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 dynamicInfo->pNext = VK_NULL_HANDLE; | 390 dynamicInfo->pNext = VK_NULL_HANDLE; |
391 dynamicInfo->flags = 0; | 391 dynamicInfo->flags = 0; |
392 dynamicStates[0] = VK_DYNAMIC_STATE_VIEWPORT; | 392 dynamicStates[0] = VK_DYNAMIC_STATE_VIEWPORT; |
393 dynamicStates[1] = VK_DYNAMIC_STATE_SCISSOR; | 393 dynamicStates[1] = VK_DYNAMIC_STATE_SCISSOR; |
394 dynamicStates[2] = VK_DYNAMIC_STATE_BLEND_CONSTANTS; | 394 dynamicStates[2] = VK_DYNAMIC_STATE_BLEND_CONSTANTS; |
395 dynamicInfo->dynamicStateCount = 3; | 395 dynamicInfo->dynamicStateCount = 3; |
396 dynamicInfo->pDynamicStates = dynamicStates; | 396 dynamicInfo->pDynamicStates = dynamicStates; |
397 } | 397 } |
398 | 398 |
399 GrVkPipeline* GrVkPipeline::Create(GrVkGpu* gpu, const GrPipeline& pipeline, | 399 GrVkPipeline* GrVkPipeline::Create(GrVkGpu* gpu, const GrPipeline& pipeline, |
| 400 const GrStencilSettings& stencil, |
400 const GrPrimitiveProcessor& primProc, | 401 const GrPrimitiveProcessor& primProc, |
401 VkPipelineShaderStageCreateInfo* shaderStageI
nfo, | 402 VkPipelineShaderStageCreateInfo* shaderStageI
nfo, |
402 int shaderStageCount, | 403 int shaderStageCount, |
403 GrPrimitiveType primitiveType, | 404 GrPrimitiveType primitiveType, |
404 const GrVkRenderPass& renderPass, | 405 const GrVkRenderPass& renderPass, |
405 VkPipelineLayout layout, | 406 VkPipelineLayout layout, |
406 VkPipelineCache cache) { | 407 VkPipelineCache cache) { |
407 VkPipelineVertexInputStateCreateInfo vertexInputInfo; | 408 VkPipelineVertexInputStateCreateInfo vertexInputInfo; |
408 VkVertexInputBindingDescription bindingDesc; | 409 VkVertexInputBindingDescription bindingDesc; |
409 SkSTArray<16, VkVertexInputAttributeDescription> attributeDesc; | 410 SkSTArray<16, VkVertexInputAttributeDescription> attributeDesc; |
410 SkASSERT(primProc.numAttribs() <= gpu->vkCaps().maxVertexAttributes()); | 411 SkASSERT(primProc.numAttribs() <= gpu->vkCaps().maxVertexAttributes()); |
411 VkVertexInputAttributeDescription* pAttribs = attributeDesc.push_back_n(prim
Proc.numAttribs()); | 412 VkVertexInputAttributeDescription* pAttribs = attributeDesc.push_back_n(prim
Proc.numAttribs()); |
412 setup_vertex_input_state(primProc, &vertexInputInfo, &bindingDesc, 1, pAttri
bs); | 413 setup_vertex_input_state(primProc, &vertexInputInfo, &bindingDesc, 1, pAttri
bs); |
413 | 414 |
414 VkPipelineInputAssemblyStateCreateInfo inputAssemblyInfo; | 415 VkPipelineInputAssemblyStateCreateInfo inputAssemblyInfo; |
415 setup_input_assembly_state(primitiveType, &inputAssemblyInfo); | 416 setup_input_assembly_state(primitiveType, &inputAssemblyInfo); |
416 | 417 |
417 VkPipelineDepthStencilStateCreateInfo depthStencilInfo; | 418 VkPipelineDepthStencilStateCreateInfo depthStencilInfo; |
418 setup_depth_stencil_state(pipeline.getStencil(), &depthStencilInfo); | 419 setup_depth_stencil_state(stencil, &depthStencilInfo); |
419 | 420 |
420 VkPipelineViewportStateCreateInfo viewportInfo; | 421 VkPipelineViewportStateCreateInfo viewportInfo; |
421 setup_viewport_scissor_state(&viewportInfo); | 422 setup_viewport_scissor_state(&viewportInfo); |
422 | 423 |
423 VkPipelineMultisampleStateCreateInfo multisampleInfo; | 424 VkPipelineMultisampleStateCreateInfo multisampleInfo; |
424 setup_multisample_state(pipeline, primProc, gpu->caps(), &multisampleInfo); | 425 setup_multisample_state(pipeline, primProc, gpu->caps(), &multisampleInfo); |
425 | 426 |
426 // We will only have one color attachment per pipeline. | 427 // We will only have one color attachment per pipeline. |
427 VkPipelineColorBlendAttachmentState attachmentStates[1]; | 428 VkPipelineColorBlendAttachmentState attachmentStates[1]; |
428 VkPipelineColorBlendStateCreateInfo colorBlendInfo; | 429 VkPipelineColorBlendStateCreateInfo colorBlendInfo; |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 } | 538 } |
538 | 539 |
539 void GrVkPipeline::SetDynamicState(GrVkGpu* gpu, | 540 void GrVkPipeline::SetDynamicState(GrVkGpu* gpu, |
540 GrVkCommandBuffer* cmdBuffer, | 541 GrVkCommandBuffer* cmdBuffer, |
541 const GrPipeline& pipeline) { | 542 const GrPipeline& pipeline) { |
542 const GrRenderTarget& target = *pipeline.getRenderTarget(); | 543 const GrRenderTarget& target = *pipeline.getRenderTarget(); |
543 set_dynamic_scissor_state(gpu, cmdBuffer, pipeline, target); | 544 set_dynamic_scissor_state(gpu, cmdBuffer, pipeline, target); |
544 set_dynamic_viewport_state(gpu, cmdBuffer, target); | 545 set_dynamic_viewport_state(gpu, cmdBuffer, target); |
545 set_dynamic_blend_constant_state(gpu, cmdBuffer, pipeline); | 546 set_dynamic_blend_constant_state(gpu, cmdBuffer, pipeline); |
546 } | 547 } |
OLD | NEW |