482 {
486 int totalAttributeCnt = vertexAttribs.
count() + instanceAttribs.
count();
487 SkASSERT(totalAttributeCnt <= gpu->vkCaps().maxVertexAttributes());
490 pAttribs);
491
494
497
500
503
504
508
511
513 if (useConservativeRaster) {
516 conservativeRasterInfo.
pNext = rasterInfo.
pNext;
517 rasterInfo.
pNext = &conservativeRasterInfo;
518 }
519
523
527 pipelineCreateInfo.
pNext =
nullptr;
528 pipelineCreateInfo.
flags = 0;
529 pipelineCreateInfo.
stageCount = shaderStageCount;
530 pipelineCreateInfo.
pStages = shaderStageInfo;
541 pipelineCreateInfo.
renderPass = compatibleRenderPass;
542 pipelineCreateInfo.
subpass = subpass;
545
546 VkPipeline vkPipeline;
548 {
550#if defined(SK_ENABLE_SCOPED_LSAN_SUPPRESSIONS)
551
552 __lsan::ScopedDisabler lsanDisabler;
553#endif
555 &pipelineCreateInfo, nullptr,
556 &vkPipeline));
557 }
558 if (err) {
559 SkDebugf(
"Failed to create pipeline. Error: %d\n", err);
560 return nullptr;
561 }
562
563 if (!ownsLayout) {
565 }
567}
static void setup_multisample_state(int numSamples, const GrCaps *caps, VkPipelineMultisampleStateCreateInfo *multisampleInfo)
static void setup_vertex_input_state(const GrGeometryProcessor::AttributeSet &vertexAttribs, const GrGeometryProcessor::AttributeSet &instanceAttribs, VkPipelineVertexInputStateCreateInfo *vertexInputInfo, STArray< 2, VkVertexInputBindingDescription, true > *bindingDescs, VkVertexInputAttributeDescription *attributeDesc)
static void setup_conservative_raster_info(VkPipelineRasterizationConservativeStateCreateInfoEXT *conservativeRasterInfo)
static void setup_input_assembly_state(GrPrimitiveType primitiveType, VkPipelineInputAssemblyStateCreateInfo *inputAssemblyInfo)
static void setup_viewport_scissor_state(VkPipelineViewportStateCreateInfo *viewportInfo)
static void setup_raster_state(bool isWireframe, const GrCaps *caps, VkPipelineRasterizationStateCreateInfo *rasterInfo)
static void setup_color_blend_state(const skgpu::BlendInfo &blendInfo, VkPipelineColorBlendStateCreateInfo *colorBlendInfo, VkPipelineColorBlendAttachmentState *attachmentState)
static void setup_dynamic_state(VkPipelineDynamicStateCreateInfo *dynamicInfo, VkDynamicState *dynamicStates)
static void setup_depth_stencil_state(const GrStencilSettings &stencilSettings, GrSurfaceOrigin origin, VkPipelineDepthStencilStateCreateInfo *stencilInfo)
#define GR_VK_CALL_RESULT(GPU, RESULT, X)
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
#define TRACE_EVENT0_ALWAYS(category_group, name)
bool conservativeRasterSupport() const
const GrCaps * caps() const
const VkPipelineTessellationStateCreateInfo * pTessellationState
const VkPipelineDepthStencilStateCreateInfo * pDepthStencilState
int32_t basePipelineIndex
const VkPipelineDynamicStateCreateInfo * pDynamicState
const VkPipelineColorBlendStateCreateInfo * pColorBlendState
VkPipelineCreateFlags flags
const VkPipelineInputAssemblyStateCreateInfo * pInputAssemblyState
const VkPipelineMultisampleStateCreateInfo * pMultisampleState
const VkPipelineVertexInputStateCreateInfo * pVertexInputState
const VkPipelineShaderStageCreateInfo * pStages
VkPipeline basePipelineHandle
const VkPipelineRasterizationStateCreateInfo * pRasterizationState
const VkPipelineViewportStateCreateInfo * pViewportState
@ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO