Lines Matching defs:obj
99 zink_destroy_resource_object(struct zink_screen *screen, struct zink_resource_object *obj)
101 if (obj->is_buffer) {
102 VKSCR(DestroyBuffer)(screen->dev, obj->buffer, NULL);
103 VKSCR(DestroyBuffer)(screen->dev, obj->storage_buffer, NULL);
104 } else if (obj->dt) {
105 zink_kopper_displaytarget_destroy(screen, obj->dt);
106 } else if (!obj->is_aux) {
107 VKSCR(DestroyImage)(screen->dev, obj->image, NULL);
110 close(obj->handle);
114 zink_descriptor_set_refs_clear(&obj->desc_set_refs, obj);
115 if (obj->dt) {
116 FREE(obj->bo); //this is a dummy struct
118 zink_bo_unref(screen, obj->bo);
119 FREE(obj);
141 zink_resource_object_reference(screen, &res->obj, NULL);
553 struct zink_resource_object *obj = CALLOC_STRUCT(zink_resource_object);
554 if (!obj)
556 obj->last_dt_idx = obj->dt_idx = UINT32_MAX; //TODO: unionize
563 obj->is_aux = true;
565 for (obj->plane_count = 1; pnext; obj->plane_count++, pnext = pnext->next) {
567 if (!next->obj->is_aux)
609 pipe_reference_init(&obj->reference, 1);
610 util_dynarray_init(&obj->desc_set_refs.refs, NULL);
612 obj->bo = CALLOC_STRUCT(zink_bo);
613 obj->transfer_dst = true;
614 return obj;
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);
640 obj->is_buffer = true;
641 obj->transfer_dst = true;
700 obj->render_target = (ici.usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) != 0;
715 idfmeci.drmFormatModifierPlaneCount = obj->plane_count;
718 for (unsigned i = 1; i < obj->plane_count; i++, pnext = pnext->next) {
720 obj->plane_offsets[i] = plane_layouts[i].offset = next->obj->plane_offsets[i];
721 obj->plane_strides[i] = plane_layouts[i].rowPitch = next->obj->plane_strides[i];
744 obj->transfer_dst = true;
747 if (obj->is_aux) {
748 obj->modifier = mod;
749 obj->modifier_aspect = VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT << whandle->plane;
750 obj->plane_offsets[whandle->plane] = whandle->offset;
751 obj->plane_strides[whandle->plane] = whandle->stride;
752 obj->handle = os_dupfd_cloexec(whandle->handle);
753 if (obj->handle < 0) {
757 return obj;
789 obj->vkfeats = feats;
813 VkResult res = VKSCR(CreateSamplerYcbcrConversion)(screen->dev, &sycci, NULL, &obj->sampler_conversion);
819 obj->plane_strides[whandle->plane] = whandle->stride;
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);
848 obj->modifier = modprops.drmFormatModifier;
849 unsigned num_dmabuf_planes = screen->base.get_dmabuf_modifier_planes(&screen->base, obj->modifier, templ->format);
850 obj->modifier_aspect = VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT;
852 obj->modifier_aspect |= VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT;
854 obj->modifier_aspect |= VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT;
856 obj->modifier_aspect |= VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT;
866 info2.image = obj->image;
883 obj->plane_offsets[i] = offset;
890 VKSCR(GetImageMemoryRequirements)(screen->dev, obj->image, &reqs);
897 obj->vkflags = ici.flags;
898 obj->vkusage = ici.usage;
900 obj->alignment = reqs.alignment;
937 .image = obj->image,
953 obj->exportable = true;
1005 if (templ->usage == PIPE_USAGE_STAGING && obj->is_buffer)
1007 obj->alignment = alignment;
1009 obj->bo = zink_bo(zink_bo_create(screen, reqs.size, alignment, heap, mai.pNext ? ZINK_ALLOC_NO_SUBALLOC : 0, mai.pNext));
1010 if (!obj->bo) {
1021 obj->size = templ->width0;
1023 obj->offset = zink_bo_get_offset(obj->bo);
1024 obj->size = zink_bo_get_size(obj->bo);
1027 obj->coherent = obj->bo->base.placement & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT;
1029 obj->host_visible = obj->bo->base.placement & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
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) {
1049 infos[i].image = obj->image;
1050 infos[i].memory = zink_bo_get_mem(obj->bo);
1051 infos[i].memoryOffset = obj->plane_offsets[i];
1065 if (VKSCR(BindImageMemory)(screen->dev, obj->image, zink_bo_get_mem(obj->bo), obj->offset) != VK_SUCCESS) {
1071 return obj;
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);
1083 FREE(obj);
1122 res->obj = resource_object_create(screen, &templ2, whandle, &optimal_tiling, modifiers, modifiers_count, loader_private);
1123 if (!res->obj) {
1148 VKSCR(GetImageSparseMemoryRequirements)(screen->dev, res->obj->image, &count, &res->sparse);
1166 res->obj->dt = zink_kopper_displaytarget_create(screen,
1173 assert(res->obj->dt);
1177 struct kopper_displaytarget *cdt = back->obj->dt;
1179 assert(back->obj->dt);
1180 res->obj->dt = back->obj->dt;
1182 struct kopper_displaytarget *cdt = res->obj->dt;
1184 res->obj->vkflags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;
1186 res->obj->vkflags = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT;
1187 res->obj->vkusage = cdt->swapchain->scci.imageUsage;
1192 if (!res->obj->host_visible)
1194 if (res->obj->is_buffer) {
1202 if (res->obj->exportable)
1236 struct zink_resource_object *old_obj = res->obj;
1250 staging.obj = old_obj;
1253 res->obj->access = 0;
1254 res->obj->access_stage = 0;
1260 res->obj = new_obj;
1286 struct zink_resource_object *obj = res->obj;
1289 if (obj->modifier_aspect) {
1306 } else if (res->obj->sampler_conversion) {
1325 VKSCR(GetImageSubresourceLayout)(screen->dev, obj->image, &sub_res, &sub_res_layout);
1338 VKSCR(GetImageSubresourceLayout)(screen->dev, obj->image, &isr, &srl);
1344 *value = obj->modifier;
1355 VKSCR(GetImageSubresourceLayout)(screen->dev, obj->image, &isr, &srl);
1405 struct zink_resource_object *obj = res->obj;
1411 if (!res->obj->exportable) {
1421 obj = res->obj;
1427 fd_info.memory = zink_bo_get_mem(obj->bo);
1439 bool ret = zink_bo_get_kms_handle(screen, obj->bo, fd, &h);
1453 handle_info.memory = zink_bo_get_mem(obj->bo);
1591 struct zink_resource_object *old_obj = res->obj;
1599 res->obj = new_obj;
1635 if (dst->obj->transfer_dst)
1660 zink_resource_init_mem_range(struct zink_screen *screen, struct zink_resource_object *obj, VkDeviceSize offset, VkDeviceSize size)
1662 assert(obj->size);
1663 align_offset_size(screen->info.props.limits.nonCoherentAtomSize, &offset, &size, obj->size);
1667 zink_bo_get_mem(obj->bo),
1678 assert(res->obj->host_visible);
1679 return zink_bo_map(screen, res->obj->bo);
1685 zink_bo_unmap(screen, res->obj->bo);
1782 (!res->obj->host_visible ||
1788 if (!res->obj->host_visible || force_discard_range ||
1815 if (!res->obj->host_visible)
1821 (((usage & PIPE_MAP_READ) && !(usage & PIPE_MAP_PERSISTENT) && res->base.b.usage != PIPE_USAGE_STAGING) || !res->obj->host_visible)) {
1823 if (!res->obj->host_visible || !(usage & PIPE_MAP_ONCE)) {
1834 } else if ((usage & PIPE_MAP_UNSYNCHRONIZED) && !res->obj->host_visible) {
1849 res->obj->access = 0;
1850 res->obj->access_stage = 0;
1866 if (!res->obj->coherent
1877 VkDeviceSize offset = res->obj->offset + trans->offset;
1878 VkMappedMemoryRange range = zink_resource_init_mem_range(screen, res->obj, offset, size);
1881 zink_bo_unmap(screen, res->obj->bo);
1889 res->obj->persistent_maps++;
1927 if (res->optimal_tiling || !res->obj->host_visible) {
1978 res->modifiers ? res->obj->modifier_aspect : res->aspect,
1983 VKSCR(GetImageSubresourceLayout)(screen->dev, res->obj->image, &isr, &srl);
1996 if (!res->obj->coherent) {
1998 VkMappedMemoryRange range = zink_resource_init_mem_range(screen, res->obj, res->obj->offset + offset, size);
2016 res->obj->persistent_maps++;
2040 if (m->obj->is_buffer) {
2050 assert(src_offset + size <= res->obj->size);
2052 if (!m->obj->coherent) {
2053 VkMappedMemoryRange range = zink_resource_init_mem_range(screen, m->obj, m->obj->offset, m->obj->size);
2084 res->obj->persistent_maps--;
2163 if (res->obj->is_buffer) {
2167 assert(!res->obj->dt);