Lines Matching refs:screen

99 zink_destroy_resource_object(struct zink_screen *screen, struct zink_resource_object *obj)
102 VKSCR(DestroyBuffer)(screen->dev, obj->buffer, NULL);
103 VKSCR(DestroyBuffer)(screen->dev, obj->storage_buffer, NULL);
105 zink_kopper_displaytarget_destroy(screen, obj->dt);
107 VKSCR(DestroyImage)(screen->dev, obj->image, NULL);
118 zink_bo_unref(screen, obj->bo);
126 struct zink_screen *screen = zink_screen(pscreen);
130 util_idalloc_mt_free(&screen->buffer_ids, res->base.buffer_id_unique);
141 zink_resource_object_reference(screen, &res->obj, NULL);
162 create_bci(struct zink_screen *screen, const struct pipe_resource *templ, unsigned bind)
198 check_ici(struct zink_screen *screen, VkImageCreateInfo *ici, uint64_t modifier)
203 (VKSCR(GetPhysicalDeviceImageFormatProperties2) && screen->info.have_EXT_image_drm_format_modifier));
211 if (screen->info.have_KHR_sampler_ycbcr_conversion)
233 ret = VKSCR(GetPhysicalDeviceImageFormatProperties2)(screen->pdev, &info, &props2);
239 ret = VKSCR(GetPhysicalDeviceImageFormatProperties)(screen->pdev, ici->format, ici->imageType,
255 get_image_usage_for_feats(struct zink_screen *screen, VkFormatFeatureFlags feats, const struct pipe_resource *templ, unsigned bind, bool *need_extended)
273 assert(templ->nr_samples <= 1 || screen->info.feats.features.shaderStorageImageMultisample);
332 double_check_ici(struct zink_screen *screen, VkImageCreateInfo *ici, VkImageUsageFlags usage, uint64_t *mod)
339 if (check_ici(screen, ici, *mod))
344 if (check_ici(screen, ici, *mod))
353 get_image_usage(struct zink_screen *screen, VkImageCreateInfo *ici, const struct pipe_resource *templ, unsigned bind, unsigned modifiers_count, const uint64_t *modifiers, uint64_t *mod)
360 const struct zink_modifier_prop *prop = &screen->modifier_props[templ->format];
365 if (!screen->info.have_EXT_image_drm_format_modifier)
371 VkImageUsageFlags usage = get_image_usage_for_feats(screen, feats, templ, bind, &need_extended);
373 if (double_check_ici(screen, ici, usage, mod))
381 VkImageUsageFlags usage = get_image_usage_for_feats(screen, feats, templ, bind, &need_extended);
383 if (double_check_ici(screen, ici, usage, mod))
389 VkFormatProperties props = screen->format_props[templ->format];
393 VkImageUsageFlags usage = get_image_usage_for_feats(screen, feats, templ, bind, &need_extended);
397 usage = get_image_usage_for_feats(screen, feats, templ, bind, &need_extended);
399 if (double_check_ici(screen, ici, usage, mod))
407 create_ici(struct zink_screen *screen, VkImageCreateInfo *ici, const struct pipe_resource *templ, bool dmabuf, unsigned bind, unsigned modifiers_count, const uint64_t *modifiers, bool *success)
432 need_2D |= screen->need_2D_sparse;
434 need_2D |= screen->need_2D_zs;
449 if (screen->info.have_EXT_image_2d_view_of_3d)
460 if (screen->info.have_EXT_sample_locations &&
465 ici->format = zink_get_format(screen, templ->format);
472 ici->tiling = screen->info.have_EXT_image_drm_format_modifier && modifiers_count ?
534 ici->usage = get_image_usage(screen, ici, templ, bind, modifiers_count, modifiers, &mod);
541 if (get_image_usage(screen, ici, templ, bind, modifiers_count, modifiers, &mod) != ici->usage)
550 resource_object_create(struct zink_screen *screen, const struct pipe_resource *templ, struct winsys_handle *whandle, bool *optimal_tiling,
606 if (shared && screen->info.have_EXT_external_memory_dma_buf)
616 VkBufferCreateInfo bci = create_bci(screen, templ, templ->bind);
618 if (VKSCR(CreateBuffer)(screen->dev, &bci, NULL, &obj->buffer) != VK_SUCCESS) {
625 if (VKSCR(CreateBuffer)(screen->dev, &bci, NULL, &obj->storage_buffer) != VK_SUCCESS) {
631 VKSCR(GetBufferMemoryRequirements)(screen->dev, obj->buffer, &reqs);
649 modifiers_count = screen->modifier_props[templ->format].drmFormatModifierCount;
651 mods[j] = screen->modifier_props[templ->format].pDrmFormatModifierProperties[j].drmFormatModifier;
678 formats[0] = zink_get_format(screen, templ->format);
679 formats[1] = zink_get_format(screen, srgb);
684 uint64_t mod = create_ici(screen, &ici, templ, external == VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,
764 feats = screen->format_props[templ->format].linearTilingFeatures;
767 feats = screen->format_props[templ->format].optimalTilingFeatures;
783 for (unsigned i = 0; i < screen->modifier_props[templ->format].drmFormatModifierCount; i++)
784 feats &= screen->modifier_props[templ->format].pDrmFormatModifierProperties[i].drmFormatModifierTilingFeatures;
813 VkResult res = VKSCR(CreateSamplerYcbcrConversion)(screen->dev, &sycci, NULL, &obj->sampler_conversion);
822 VkResult result = VKSCR(CreateImage)(screen->dev, &ici, NULL, &obj->image);
829 result = VKSCR(CreateImage)(screen->dev, &ici, NULL, &obj->image);
843 result = VKSCR(GetImageDrmFormatModifierPropertiesEXT)(screen->dev, obj->image, &modprops);
849 unsigned num_dmabuf_planes = screen->base.get_dmabuf_modifier_planes(&screen->base, obj->modifier, templ->format);
880 VKSCR(GetImageMemoryRequirements2)(screen->dev, &info2, &req2);
890 VKSCR(GetImageMemoryRequirements)(screen->dev, obj->image, &reqs);
917 mai.memoryTypeIndex = screen->heap_map[heap];
930 mai.memoryTypeIndex = screen->heap_map[heap];
941 if (screen->info.have_KHR_dedicated_allocation && need_dedicated) {
1006 alignment = MAX2(alignment, screen->info.props.limits.minMemoryMapAlignment);
1009 obj->bo = zink_bo(zink_bo_create(screen, reqs.size, alignment, heap, mai.pNext ? ZINK_ALLOC_NO_SUBALLOC : 0, mai.pNext));
1034 if (VKSCR(BindBufferMemory)(screen->dev, obj->buffer, zink_bo_get_mem(obj->bo), obj->offset) != VK_SUCCESS) {
1038 if (obj->storage_buffer && VKSCR(BindBufferMemory)(screen->dev, obj->storage_buffer, zink_bo_get_mem(obj->bo), obj->offset) != VK_SUCCESS) {
1059 if (VKSCR(BindImageMemory2)(screen->dev, num_planes, infos) != VK_SUCCESS) {
1065 if (VKSCR(BindImageMemory)(screen->dev, obj->image, zink_bo_get_mem(obj->bo), obj->offset) != VK_SUCCESS) {
1074 zink_bo_unref(screen, obj->bo);
1078 VKSCR(DestroyBuffer)(screen->dev, obj->buffer, NULL);
1079 VKSCR(DestroyBuffer)(screen->dev, obj->storage_buffer, NULL);
1081 VKSCR(DestroyImage)(screen->dev, obj->image, NULL);
1095 struct zink_screen *screen = zink_screen(pscreen);
1098 if (modifiers_count > 0 && screen->info.have_EXT_image_drm_format_modifier) {
1112 res->base.b.screen = pscreen;
1118 if (screen->faked_e5sparse && templ->format == PIPE_FORMAT_R9G9B9E5_FLOAT) {
1122 res->obj = resource_object_create(screen, &templ2, whandle, &optimal_tiling, modifiers, modifiers_count, loader_private);
1133 if (!screen->resizable_bar && templ->width0 >= 8196) {
1148 VKSCR(GetImageSparseMemoryRequirements)(screen->dev, res->obj->image, &count, &res->sparse);
1151 res->format = zink_get_format(screen, templ->format);
1153 res->need_2D = (screen->need_2D_zs && util_format_is_depth_or_stencil(templ->format)) ||
1154 (screen->need_2D_sparse && (templ->flags & PIPE_RESOURCE_FLAG_SPARSE));
1166 res->obj->dt = zink_kopper_displaytarget_create(screen,
1195 res->base.buffer_id_unique = util_idalloc_mt_alloc(&screen->buffer_ids);
1232 struct zink_screen *screen = zink_screen(ctx->base.screen);
1237 if (bind & ZINK_BIND_DMABUF && !res->modifiers_count && screen->info.have_EXT_image_drm_format_modifier) {
1238 res->modifiers_count = screen->modifier_props[res->base.b.format].drmFormatModifierCount;
1240 for (unsigned i = 0; i < screen->modifier_props[res->base.b.format].drmFormatModifierCount; i++)
1241 res->modifiers[i] = screen->modifier_props[res->base.b.format].pDrmFormatModifierProperties[i].drmFormatModifier;
1243 struct zink_resource_object *new_obj = resource_object_create(screen, &res->base.b, NULL, &res->optimal_tiling, res->modifiers, res->modifiers_count, NULL);
1270 zink_resource_object_reference(screen, &old_obj, NULL);
1284 struct zink_screen *screen = zink_screen(pscreen);
1313 if (screen->info.have_EXT_image_drm_format_modifier)
1325 VKSCR(GetImageSubresourceLayout)(screen->dev, obj->image, &sub_res, &sub_res_layout);
1338 VKSCR(GetImageSubresourceLayout)(screen->dev, obj->image, &isr, &srl);
1355 VKSCR(GetImageSubresourceLayout)(screen->dev, obj->image, &isr, &srl);
1404 struct zink_screen *screen = zink_screen(pscreen);
1408 if (whandle->type == WINSYS_HANDLE_TYPE_KMS && screen->drm_fd == -1) {
1417 if (!add_resource_bind(screen->copy_context, res, bind))
1419 p_atomic_inc(&screen->image_rebind_counter);
1420 screen->copy_context->base.flush(&screen->copy_context->base, NULL, 0);
1432 VkResult result = VKSCR(GetMemoryFdKHR)(screen->dev, &fd_info, &fd);
1439 bool ret = zink_bo_get_kms_handle(screen, obj->bo, fd, &h);
1455 VkResult result = VKSCR(GetMemoryWin32HandleKHR)(screen->dev, &handle_info, &handle);
1572 struct zink_screen *screen = zink_screen(ctx->base.screen);
1592 struct zink_resource_object *new_obj = resource_object_create(screen, &res->base.b, NULL, NULL, NULL, 0, NULL);
1660 zink_resource_init_mem_range(struct zink_screen *screen, struct zink_resource_object *obj, VkDeviceSize offset, VkDeviceSize size)
1663 align_offset_size(screen->info.props.limits.nonCoherentAtomSize, &offset, &size, obj->size);
1676 map_resource(struct zink_screen *screen, struct zink_resource *res)
1679 return zink_bo_map(screen, res->obj->bo);
1683 unmap_resource(struct zink_screen *screen, struct zink_resource *res)
1685 zink_bo_unmap(screen, res->obj->bo);
1731 struct zink_screen *screen = zink_screen(pctx->screen);
1789 !zink_resource_usage_check_completion(screen, res, ZINK_RESOURCE_ACCESS_RW)) {
1803 screen->info.props.limits.minMemoryMapAlignment, &offset,
1817 if (!zink_resource_usage_check_completion(screen, res, ZINK_RESOURCE_ACCESS_WRITE))
1824 trans->offset = box->x % screen->info.props.limits.minMemoryMapAlignment;
1825 trans->staging_res = pipe_buffer_create(&screen->base, PIPE_BIND_LINEAR, PIPE_USAGE_STAGING, box->width + trans->offset);
1835 trans->offset = box->x % screen->info.props.limits.minMemoryMapAlignment;
1836 trans->staging_res = pipe_buffer_create(&screen->base, PIPE_BIND_LINEAR, PIPE_USAGE_STAGING, box->width + trans->offset);
1860 ptr = map_resource(screen, res);
1873 || screen->instance_info.have_MVK_moltenvk
1878 VkMappedMemoryRange range = zink_resource_init_mem_range(screen, res->obj, offset, size);
1879 if (VKSCR(InvalidateMappedMemoryRanges)(screen->dev, 1, &range) != VK_SUCCESS) {
1881 zink_bo_unmap(screen, res->obj->bo);
1909 struct zink_screen *screen = zink_screen(pctx->screen);
1950 trans->staging_res = zink_resource_create(pctx->screen, &templ);
1965 ptr = map_resource(screen, staging_res);
1968 ptr = map_resource(screen, res);
1983 VKSCR(GetImageSubresourceLayout)(screen->dev, res->obj->image, &isr, &srl);
1998 VkMappedMemoryRange range = zink_resource_init_mem_range(screen, res->obj, res->obj->offset + offset, size);
1999 if (VKSCR(FlushMappedMemoryRanges)(screen->dev, 1, &range) != VK_SUCCESS) {
2036 struct zink_screen *screen = zink_screen(pctx->screen);
2053 VkMappedMemoryRange range = zink_resource_init_mem_range(screen, m->obj, m->obj->offset, m->obj->size);
2054 if (VKSCR(FlushMappedMemoryRanges)(screen->dev, 1, &range) != VK_SUCCESS) {
2094 do_transfer_unmap(struct zink_screen *screen, struct zink_transfer *trans)
2099 unmap_resource(screen, res);
2105 struct zink_screen *screen = zink_screen(pctx->screen);
2108 do_transfer_unmap(screen, trans);
2115 struct zink_screen *screen = zink_screen(pctx->screen);
2118 do_transfer_unmap(screen, trans);
2262 struct zink_screen *screen = zink_screen(pscreen);
2267 pscreen->transfer_helper = u_transfer_helper_create(&transfer_vtbl, true, true, false, false, !screen->have_D24_UNORM_S8_UINT);
2269 if (screen->info.have_KHR_external_memory_fd || screen->info.have_KHR_external_memory_win32) {
2273 if (screen->instance_info.have_KHR_external_memory_capabilities) {