• Home
  • Raw
  • Download

Lines Matching full:builder

76 panvk_pipeline_builder_create_pipeline(struct panvk_pipeline_builder *builder,  in panvk_pipeline_builder_create_pipeline()  argument
79 struct panvk_device *dev = builder->device; in panvk_pipeline_builder_create_pipeline()
82 vk_object_zalloc(&dev->vk, builder->alloc, in panvk_pipeline_builder_create_pipeline()
87 pipeline->layout = builder->layout; in panvk_pipeline_builder_create_pipeline()
93 panvk_pipeline_builder_finish(struct panvk_pipeline_builder *builder) in panvk_pipeline_builder_finish() argument
96 if (!builder->shaders[i]) in panvk_pipeline_builder_finish()
98 panvk_shader_destroy(builder->device, builder->shaders[i], builder->alloc); in panvk_pipeline_builder_finish()
109 panvk_pipeline_builder_compile_shaders(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_compile_shaders() argument
116 builder->create_info.gfx ? in panvk_pipeline_builder_compile_shaders()
117 builder->create_info.gfx->pStages : in panvk_pipeline_builder_compile_shaders()
118 &builder->create_info.compute->stage; in panvk_pipeline_builder_compile_shaders()
120 builder->create_info.gfx ? builder->create_info.gfx->stageCount : 1; in panvk_pipeline_builder_compile_shaders()
136 shader = panvk_per_arch(shader_create)(builder->device, stage, stage_info, in panvk_pipeline_builder_compile_shaders()
137 builder->layout, in panvk_pipeline_builder_compile_shaders()
142 builder->alloc); in panvk_pipeline_builder_compile_shaders()
146 builder->shaders[stage] = shader; in panvk_pipeline_builder_compile_shaders()
147 builder->shader_total_size = ALIGN_POT(builder->shader_total_size, 128); in panvk_pipeline_builder_compile_shaders()
148 builder->stages[stage].shader_offset = builder->shader_total_size; in panvk_pipeline_builder_compile_shaders()
149 builder->shader_total_size += in panvk_pipeline_builder_compile_shaders()
157 panvk_pipeline_builder_upload_shaders(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_upload_shaders() argument
163 if (builder->shader_total_size == 0) in panvk_pipeline_builder_upload_shaders()
167 panfrost_bo_create(&builder->device->physical_device->pdev, in panvk_pipeline_builder_upload_shaders()
168 builder->shader_total_size, PAN_BO_EXECUTE, in panvk_pipeline_builder_upload_shaders()
175 const struct panvk_shader *shader = builder->shaders[i]; in panvk_pipeline_builder_upload_shaders()
179 memcpy(pipeline->binary_bo->ptr.cpu + builder->stages[i].shader_offset, in panvk_pipeline_builder_upload_shaders()
201 panvk_pipeline_builder_alloc_static_state_bo(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_alloc_static_state_bo() argument
205 &builder->device->physical_device->pdev; in panvk_pipeline_builder_alloc_static_state_bo()
209 const struct panvk_shader *shader = builder->shaders[i]; in panvk_pipeline_builder_alloc_static_state_bo()
217 builder->stages[i].rsd_offset = bo_size; in panvk_pipeline_builder_alloc_static_state_bo()
223 if (builder->create_info.gfx && in panvk_pipeline_builder_alloc_static_state_bo()
227 builder->vpd_offset = bo_size; in panvk_pipeline_builder_alloc_static_state_bo()
239 panvk_pipeline_builder_init_sysvals(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_init_sysvals() argument
243 const struct panvk_shader *shader = builder->shaders[stage]; in panvk_pipeline_builder_init_sysvals()
250 panvk_pipeline_builder_init_shaders(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_init_shaders() argument
254 const struct panvk_shader *shader = builder->shaders[i]; in panvk_pipeline_builder_init_shaders()
266 builder->create_info.gfx->pInputAssemblyState->topology; in panvk_pipeline_builder_init_shaders()
279 if (util_dynarray_num_elements(&builder->shaders[i]->binary, uint8_t)) { in panvk_pipeline_builder_init_shaders()
281 builder->stages[i].shader_offset; in panvk_pipeline_builder_init_shaders()
285 void *rsd = pipeline->state_bo->ptr.cpu + builder->stages[i].rsd_offset; in panvk_pipeline_builder_init_shaders()
286 mali_ptr gpu_rsd = pipeline->state_bo->ptr.gpu + builder->stages[i].rsd_offset; in panvk_pipeline_builder_init_shaders()
288 panvk_per_arch(emit_non_fs_rsd)(builder->device, &shader->info, shader_ptr, rsd); in panvk_pipeline_builder_init_shaders()
292 panvk_pipeline_builder_init_sysvals(builder, pipeline, i); in panvk_pipeline_builder_init_shaders()
298 if (builder->create_info.gfx && !pipeline->fs.dynamic_rsd) { in panvk_pipeline_builder_init_shaders()
299 void *rsd = pipeline->state_bo->ptr.cpu + builder->stages[MESA_SHADER_FRAGMENT].rsd_offset; in panvk_pipeline_builder_init_shaders()
300 … mali_ptr gpu_rsd = pipeline->state_bo->ptr.gpu + builder->stages[MESA_SHADER_FRAGMENT].rsd_offset; in panvk_pipeline_builder_init_shaders()
303 panvk_per_arch(emit_base_fs_rsd)(builder->device, pipeline, rsd); in panvk_pipeline_builder_init_shaders()
305 panvk_per_arch(emit_blend)(builder->device, pipeline, rt, bd); in panvk_pipeline_builder_init_shaders()
310 } else if (builder->create_info.gfx) { in panvk_pipeline_builder_init_shaders()
311 panvk_per_arch(emit_base_fs_rsd)(builder->device, pipeline, &pipeline->fs.rsd_template); in panvk_pipeline_builder_init_shaders()
313 panvk_per_arch(emit_blend)(builder->device, pipeline, rt, in panvk_pipeline_builder_init_shaders()
319 builder->layout->num_ubos + in panvk_pipeline_builder_init_shaders()
320 builder->layout->num_dyn_ubos; in panvk_pipeline_builder_init_shaders()
325 panvk_pipeline_builder_parse_viewport(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_parse_viewport() argument
334 if (!builder->rasterizer_discard && in panvk_pipeline_builder_parse_viewport()
337 void *vpd = pipeline->state_bo->ptr.cpu + builder->vpd_offset; in panvk_pipeline_builder_parse_viewport()
338 panvk_per_arch(emit_viewport)(builder->create_info.gfx->pViewportState->pViewports, in panvk_pipeline_builder_parse_viewport()
339 builder->create_info.gfx->pViewportState->pScissors, in panvk_pipeline_builder_parse_viewport()
342 builder->vpd_offset; in panvk_pipeline_builder_parse_viewport()
345 pipeline->viewport = builder->create_info.gfx->pViewportState->pViewports[0]; in panvk_pipeline_builder_parse_viewport()
348 pipeline->scissor = builder->create_info.gfx->pViewportState->pScissors[0]; in panvk_pipeline_builder_parse_viewport()
352 panvk_pipeline_builder_parse_dynamic(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_parse_dynamic() argument
356 builder->create_info.gfx->pDynamicState; in panvk_pipeline_builder_parse_dynamic()
401 panvk_pipeline_builder_parse_input_assembly(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_parse_input_assembly() argument
405 builder->create_info.gfx->pInputAssemblyState->primitiveRestartEnable; in panvk_pipeline_builder_parse_input_assembly()
407 translate_prim_topology(builder->create_info.gfx->pInputAssemblyState->topology); in panvk_pipeline_builder_parse_input_assembly()
536 panvk_pipeline_builder_parse_color_blend(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_parse_color_blend() argument
539 struct panfrost_device *pdev = &builder->device->physical_device->pdev; in panvk_pipeline_builder_parse_color_blend()
541 builder->create_info.gfx->pColorBlendState->logicOpEnable; in panvk_pipeline_builder_parse_color_blend()
543 translate_logicop(builder->create_info.gfx->pColorBlendState->logicOp); in panvk_pipeline_builder_parse_color_blend()
544 pipeline->blend.state.rt_count = util_last_bit(builder->active_color_attachments); in panvk_pipeline_builder_parse_color_blend()
546 builder->create_info.gfx->pColorBlendState->blendConstants, in panvk_pipeline_builder_parse_color_blend()
551 &builder->create_info.gfx->pColorBlendState->pAttachments[i]; in panvk_pipeline_builder_parse_color_blend()
554 out->format = builder->color_attachment_formats[i]; in panvk_pipeline_builder_parse_color_blend()
558 out->nr_samples = builder->create_info.gfx->pMultisampleState->rasterizationSamples; in panvk_pipeline_builder_parse_color_blend()
598 panvk_pipeline_builder_parse_multisample(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_parse_multisample() argument
602 MAX2(builder->create_info.gfx->pMultisampleState->rasterizationSamples, 1); in panvk_pipeline_builder_parse_multisample()
605 builder->create_info.gfx->pMultisampleState->rasterizationSamples; in panvk_pipeline_builder_parse_multisample()
607 builder->create_info.gfx->pMultisampleState->pSampleMask ? in panvk_pipeline_builder_parse_multisample()
608 builder->create_info.gfx->pMultisampleState->pSampleMask[0] : UINT16_MAX; in panvk_pipeline_builder_parse_multisample()
610 MAX2(builder->create_info.gfx->pMultisampleState->minSampleShading * nr_samples, 1); in panvk_pipeline_builder_parse_multisample()
630 panvk_pipeline_builder_parse_zs(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_parse_zs() argument
633 if (!builder->use_depth_stencil_attachment) in panvk_pipeline_builder_parse_zs()
636 pipeline->zs.z_test = builder->create_info.gfx->pDepthStencilState->depthTestEnable; in panvk_pipeline_builder_parse_zs()
648 builder->create_info.gfx->pDepthStencilState->depthWriteEnable; in panvk_pipeline_builder_parse_zs()
651 …panvk_per_arch(translate_compare_func)(builder->create_info.gfx->pDepthStencilState->depthCompareO… in panvk_pipeline_builder_parse_zs()
652 pipeline->zs.s_test = builder->create_info.gfx->pDepthStencilState->stencilTestEnable; in panvk_pipeline_builder_parse_zs()
654 translate_stencil_op(builder->create_info.gfx->pDepthStencilState->front.failOp); in panvk_pipeline_builder_parse_zs()
656 translate_stencil_op(builder->create_info.gfx->pDepthStencilState->front.passOp); in panvk_pipeline_builder_parse_zs()
658 translate_stencil_op(builder->create_info.gfx->pDepthStencilState->front.depthFailOp); in panvk_pipeline_builder_parse_zs()
660 …panvk_per_arch(translate_compare_func)(builder->create_info.gfx->pDepthStencilState->front.compare… in panvk_pipeline_builder_parse_zs()
662 builder->create_info.gfx->pDepthStencilState->front.compareMask; in panvk_pipeline_builder_parse_zs()
664 builder->create_info.gfx->pDepthStencilState->front.writeMask; in panvk_pipeline_builder_parse_zs()
666 builder->create_info.gfx->pDepthStencilState->front.reference; in panvk_pipeline_builder_parse_zs()
668 translate_stencil_op(builder->create_info.gfx->pDepthStencilState->back.failOp); in panvk_pipeline_builder_parse_zs()
670 translate_stencil_op(builder->create_info.gfx->pDepthStencilState->back.passOp); in panvk_pipeline_builder_parse_zs()
672 translate_stencil_op(builder->create_info.gfx->pDepthStencilState->back.depthFailOp); in panvk_pipeline_builder_parse_zs()
674 …panvk_per_arch(translate_compare_func)(builder->create_info.gfx->pDepthStencilState->back.compareO… in panvk_pipeline_builder_parse_zs()
676 builder->create_info.gfx->pDepthStencilState->back.compareMask; in panvk_pipeline_builder_parse_zs()
678 builder->create_info.gfx->pDepthStencilState->back.writeMask; in panvk_pipeline_builder_parse_zs()
680 builder->create_info.gfx->pDepthStencilState->back.reference; in panvk_pipeline_builder_parse_zs()
684 panvk_pipeline_builder_parse_rast(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_parse_rast() argument
687 pipeline->rast.clamp_depth = builder->create_info.gfx->pRasterizationState->depthClampEnable; in panvk_pipeline_builder_parse_rast()
688 … pipeline->rast.depth_bias.enable = builder->create_info.gfx->pRasterizationState->depthBiasEnable; in panvk_pipeline_builder_parse_rast()
690 builder->create_info.gfx->pRasterizationState->depthBiasConstantFactor; in panvk_pipeline_builder_parse_rast()
691 pipeline->rast.depth_bias.clamp = builder->create_info.gfx->pRasterizationState->depthBiasClamp; in panvk_pipeline_builder_parse_rast()
692 …pipeline->rast.depth_bias.slope_factor = builder->create_info.gfx->pRasterizationState->depthBiasS… in panvk_pipeline_builder_parse_rast()
693 …pipeline->rast.front_ccw = builder->create_info.gfx->pRasterizationState->frontFace == VK_FRONT_FA… in panvk_pipeline_builder_parse_rast()
694 …pipeline->rast.cull_front_face = builder->create_info.gfx->pRasterizationState->cullMode & VK_CULL… in panvk_pipeline_builder_parse_rast()
695 …pipeline->rast.cull_back_face = builder->create_info.gfx->pRasterizationState->cullMode & VK_CULL_… in panvk_pipeline_builder_parse_rast()
696 pipeline->rast.line_width = builder->create_info.gfx->pRasterizationState->lineWidth; in panvk_pipeline_builder_parse_rast()
697 pipeline->rast.enable = !builder->create_info.gfx->pRasterizationState->rasterizerDiscardEnable; in panvk_pipeline_builder_parse_rast()
729 panvk_pipeline_builder_init_fs_state(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_init_fs_state() argument
732 if (!builder->shaders[MESA_SHADER_FRAGMENT]) in panvk_pipeline_builder_init_fs_state()
738 builder->stages[MESA_SHADER_FRAGMENT].shader_offset; in panvk_pipeline_builder_init_fs_state()
739 pipeline->fs.info = builder->shaders[MESA_SHADER_FRAGMENT]->info; in panvk_pipeline_builder_init_fs_state()
740 pipeline->fs.rt_mask = builder->active_color_attachments; in panvk_pipeline_builder_init_fs_state()
779 panvk_pipeline_builder_collect_varyings(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_collect_varyings() argument
783 if (!builder->shaders[s]) in panvk_pipeline_builder_collect_varyings()
786 const struct pan_shader_info *info = &builder->shaders[s]->info; in panvk_pipeline_builder_collect_varyings()
819 panvk_pipeline_builder_parse_vertex_input(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_parse_vertex_input() argument
824 builder->create_info.gfx->pVertexInputState; in panvk_pipeline_builder_parse_vertex_input()
850 &builder->shaders[MESA_SHADER_VERTEX]->info; in panvk_pipeline_builder_parse_vertex_input()
884 panvk_pipeline_builder_build(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_build() argument
887 VkResult result = panvk_pipeline_builder_create_pipeline(builder, pipeline); in panvk_pipeline_builder_build()
892 if (builder->create_info.gfx) { in panvk_pipeline_builder_build()
893 panvk_pipeline_builder_parse_dynamic(builder, *pipeline); in panvk_pipeline_builder_build()
894 panvk_pipeline_builder_parse_color_blend(builder, *pipeline); in panvk_pipeline_builder_build()
895 panvk_pipeline_builder_compile_shaders(builder, *pipeline); in panvk_pipeline_builder_build()
896 panvk_pipeline_builder_collect_varyings(builder, *pipeline); in panvk_pipeline_builder_build()
897 panvk_pipeline_builder_parse_input_assembly(builder, *pipeline); in panvk_pipeline_builder_build()
898 panvk_pipeline_builder_parse_multisample(builder, *pipeline); in panvk_pipeline_builder_build()
899 panvk_pipeline_builder_parse_zs(builder, *pipeline); in panvk_pipeline_builder_build()
900 panvk_pipeline_builder_parse_rast(builder, *pipeline); in panvk_pipeline_builder_build()
901 panvk_pipeline_builder_parse_vertex_input(builder, *pipeline); in panvk_pipeline_builder_build()
902 panvk_pipeline_builder_upload_shaders(builder, *pipeline); in panvk_pipeline_builder_build()
903 panvk_pipeline_builder_init_fs_state(builder, *pipeline); in panvk_pipeline_builder_build()
904 panvk_pipeline_builder_alloc_static_state_bo(builder, *pipeline); in panvk_pipeline_builder_build()
905 panvk_pipeline_builder_init_shaders(builder, *pipeline); in panvk_pipeline_builder_build()
906 panvk_pipeline_builder_parse_viewport(builder, *pipeline); in panvk_pipeline_builder_build()
908 panvk_pipeline_builder_compile_shaders(builder, *pipeline); in panvk_pipeline_builder_build()
909 panvk_pipeline_builder_upload_shaders(builder, *pipeline); in panvk_pipeline_builder_build()
910 panvk_pipeline_builder_alloc_static_state_bo(builder, *pipeline); in panvk_pipeline_builder_build()
911 panvk_pipeline_builder_init_shaders(builder, *pipeline); in panvk_pipeline_builder_build()
918 panvk_pipeline_builder_init_graphics(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_init_graphics() argument
926 *builder = (struct panvk_pipeline_builder) { in panvk_pipeline_builder_init_graphics()
934 builder->rasterizer_discard = in panvk_pipeline_builder_init_graphics()
937 if (builder->rasterizer_discard) { in panvk_pipeline_builder_init_graphics()
938 builder->samples = VK_SAMPLE_COUNT_1_BIT; in panvk_pipeline_builder_init_graphics()
940 builder->samples = create_info->pMultisampleState->rasterizationSamples; in panvk_pipeline_builder_init_graphics()
945 builder->use_depth_stencil_attachment = in panvk_pipeline_builder_init_graphics()
949 builder->active_color_attachments = 0; in panvk_pipeline_builder_init_graphics()
955 builder->active_color_attachments |= 1 << i; in panvk_pipeline_builder_init_graphics()
956 builder->color_attachment_formats[i] = pass->attachments[idx].format; in panvk_pipeline_builder_init_graphics()
973 struct panvk_pipeline_builder builder; in panvk_per_arch() local
974 panvk_pipeline_builder_init_graphics(&builder, dev, cache, in panvk_per_arch()
978 VkResult result = panvk_pipeline_builder_build(&builder, &pipeline); in panvk_per_arch()
979 panvk_pipeline_builder_finish(&builder); in panvk_per_arch()
997 panvk_pipeline_builder_init_compute(struct panvk_pipeline_builder *builder, in panvk_pipeline_builder_init_compute() argument
1005 *builder = (struct panvk_pipeline_builder) { in panvk_pipeline_builder_init_compute()
1026 struct panvk_pipeline_builder builder; in panvk_per_arch() local
1027 panvk_pipeline_builder_init_compute(&builder, dev, cache, in panvk_per_arch()
1031 VkResult result = panvk_pipeline_builder_build(&builder, &pipeline); in panvk_per_arch()
1032 panvk_pipeline_builder_finish(&builder); in panvk_per_arch()