Lines Matching refs:image
155 TU_FROM_HANDLE(tu_image, image, pCreateInfo->image);
167 iview->image = image;
171 layouts[0] = &image->layout[tu6_plane_index(image->vk.format, aspect_mask)];
179 if (image->vk.format == VK_FORMAT_G8_B8R8_2PLANE_420_UNORM &&
195 layouts[1] = &image->layout[1];
196 layouts[2] = &image->layout[2];
200 args.iova = image->iova;
203 args.layer_count = vk_image_subresource_layer_count(&image->vk, range);
204 args.level_count = vk_image_subresource_level_count(&image->vk, range);
245 if (image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
246 struct fdl_layout *layout = &image->layout[0];
247 iview->depth_base_addr = image->iova +
252 layout = &image->layout[1];
253 iview->stencil_base_addr = image->iova +
307 * uses linear for writeonly images). We seem to have image tiling working
318 * VK_IMAGE_ASPECT_STENCIL_BIT image view requires to be able to sample
342 tu_image_init(struct tu_device *device, struct tu_image *image,
346 vk_image_init(&device->vk, &image->vk, pCreateInfo);
347 image->vk.drm_format_mod = modifier;
359 if (!tiling_possible(image->vk.format)) {
364 /* No sense in tiling a 1D image, you'd just waste space and cache locality. */
371 tu_vk_format_to_pipe_format(image->vk.format);
372 /* Whether a view of the image with an R8G8 format could be made. */
388 !vk_format_is_depth_or_stencil(image->vk.format)) {
392 /* Whether a view of the image with a non-R8G8 but R8G8 compatible format
433 if (!ubwc_possible(image->vk.format, pCreateInfo->imageType,
434 pCreateInfo->usage, image->vk.stencil_usage,
454 for (uint32_t i = 0; i < tu6_plane_count(image->vk.format); i++) {
455 struct fdl_layout *layout = &image->layout[i];
456 enum pipe_format format = tu6_plane_format(image->vk.format, i);
461 switch (image->vk.format) {
513 uint32_t offset = ALIGN_POT(image->total_size, 4096);
521 image->total_size = MAX2(image->total_size, layout->size);
524 const struct util_format_description *desc = util_format_description(image->layout[0].format);
528 struct fdl_layout *layout = &image->layout[0];
547 image->lrz_height = lrz_height;
548 image->lrz_pitch = lrz_pitch;
549 image->lrz_offset = image->total_size;
551 image->total_size += lrz_size;
557 image->lrz_fc_size = DIV_ROUND_UP(nblocksx * nblocksy, 8);
560 bool has_lrz_fc = image->lrz_fc_size <= 512 &&
565 image->lrz_fc_offset = image->total_size;
566 image->total_size += 512;
570 image->total_size += 1;
572 image->total_size += 5;
577 image->lrz_fc_size = 0;
580 image->lrz_height = 0;
596 struct tu_image *image =
597 vk_object_zalloc(&device->vk, alloc, sizeof(*image), VK_OBJECT_TYPE_IMAGE);
599 if (!image)
642 VkResult result = tu_image_init(device, image, pCreateInfo, modifier,
645 vk_object_free(&device->vk, alloc, image);
649 *pImage = tu_image_to_handle(image);
665 TU_FROM_HANDLE(tu_image, image, _image);
667 if (!image)
671 if (image->owned_memory != VK_NULL_HANDLE)
672 tu_FreeMemory(_device, image->owned_memory, pAllocator);
675 vk_object_free(&device->vk, pAllocator, image);
679 tu_get_image_memory_requirements(struct tu_image *image,
684 .alignment = image->layout[0].base_align,
685 .size = image->total_size
694 image->vk.external_handle_types != 0;
709 TU_FROM_HANDLE(tu_image, image, pInfo->image);
711 tu_get_image_memory_requirements(image, pMemoryRequirements);
732 struct tu_image image = {0};
734 tu_image_init(device, &image, pInfo->pCreateInfo, DRM_FORMAT_MOD_INVALID,
737 tu_get_image_memory_requirements(&image, pMemoryRequirements);
756 TU_FROM_HANDLE(tu_image, image, _image);
759 &image->layout[tu6_plane_index(image->vk.format, pSubresource->aspectMask)];
773 assert(image->vk.mip_levels == 1 && image->vk.array_layers == 1);