Lines Matching refs:image

32 dzn_image_align_extent(const struct dzn_image *image,
35 enum pipe_format pfmt = vk_format_to_pipe_format(image->vk.format);
50 dzn_image_destroy(struct dzn_image *image,
53 if (!image)
56 struct dzn_device *device = container_of(image->vk.base.device, struct dzn_device, vk);
58 if (image->res)
59 ID3D12Resource_Release(image->res);
61 vk_image_finish(&image->vk);
62 vk_free2(&device->vk.alloc, pAllocator, image);
71 struct dzn_image *image =
72 vk_zalloc2(&device->vk.alloc, pAllocator, sizeof(*image), 8,
77 if (!image)
102 vk_image_init(&device->vk, &image->vk, pCreateInfo);
103 enum pipe_format pfmt = vk_format_to_pipe_format(image->vk.format);
105 if (image->vk.tiling == VK_IMAGE_TILING_LINEAR) {
131 .Width = ALIGN(image->vk.extent.width, util_format_get_blockwidth(pfmt)),
132 .Height = (UINT)ALIGN(image->vk.extent.height, util_format_get_blockheight(pfmt)),
145 image->linear.row_stride = footprint.Footprint.RowPitch;
146 image->linear.size = size;
148 image->desc.Format = DXGI_FORMAT_UNKNOWN;
149 image->desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
150 image->desc.Width = size;
151 image->desc.Height = 1;
152 image->desc.DepthOrArraySize = 1;
153 image->desc.MipLevels = 1;
154 image->desc.SampleDesc.Count = 1;
155 image->desc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
157 image->desc.Format =
161 image->desc.Dimension = (D3D12_RESOURCE_DIMENSION)(D3D12_RESOURCE_DIMENSION_TEXTURE1D + pCreateInfo->imageType);
162 image->desc.Width = image->vk.extent.width;
163 image->desc.Height = image->vk.extent.height;
164 image->desc.DepthOrArraySize = pCreateInfo->imageType == VK_IMAGE_TYPE_3D ?
165 image->vk.extent.depth :
167 image->desc.MipLevels = pCreateInfo->mipLevels;
168 image->desc.SampleDesc.Count = pCreateInfo->samples;
169 image->desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN;
172 if (image->vk.create_flags & VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT)
173 image->desc.Format = dzn_get_typeless_dxgi_format(image->desc.Format);
175 if (image->desc.SampleDesc.Count > 1)
176 image->desc.Alignment = D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT;
178 image->desc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
180 image->desc.SampleDesc.Quality = 0;
182 image->desc.Flags = D3D12_RESOURCE_FLAG_NONE;
184 if (image->vk.usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)
185 image->desc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET;
187 if (image->vk.usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) {
188 image->desc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL;
190 if (!(image->vk.usage & (VK_IMAGE_USAGE_SAMPLED_BIT |
194 image->desc.Flags |= D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE;
200 if ((image->vk.usage & VK_IMAGE_USAGE_TRANSFER_DST_BIT) &&
201 image->vk.tiling == VK_IMAGE_TILING_OPTIMAL) {
206 image->desc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET;
208 image->desc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL;
210 image->desc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
214 if (image->vk.usage & VK_IMAGE_USAGE_STORAGE_BIT)
215 image->desc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
217 *out = dzn_image_to_handle(image);
308 dzn_image_layers_get_subresource_index(const struct dzn_image *image,
317 ((subres->baseArrayLayer + layer) * image->desc.MipLevels) +
318 (planeSlice * image->desc.MipLevels * image->desc.DepthOrArraySize);
322 dzn_image_range_get_subresource_index(const struct dzn_image *image,
331 ((subres->baseArrayLayer + layer) * image->desc.MipLevels) +
332 (planeSlice * image->desc.MipLevels * image->desc.DepthOrArraySize);
336 dzn_image_get_subresource_index(const struct dzn_image *image,
344 (subres->arrayLayer * image->desc.MipLevels) +
345 (planeSlice * image->desc.MipLevels * image->desc.DepthOrArraySize);
349 dzn_image_get_copy_loc(const struct dzn_image *image,
355 .pResource = image->res,
360 if (image->desc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER) {
366 dzn_image_get_placed_footprint_format(image->vk.format, aspect);
367 loc.PlacedFootprint.Footprint.Width = image->vk.extent.width;
368 loc.PlacedFootprint.Footprint.Height = image->vk.extent.height;
369 loc.PlacedFootprint.Footprint.Depth = image->vk.extent.depth;
370 loc.PlacedFootprint.Footprint.RowPitch = image->linear.row_stride;
373 loc.SubresourceIndex = dzn_image_layers_get_subresource_index(image, subres, aspect, layer);
380 dzn_image_get_dsv_desc(const struct dzn_image *image,
384 uint32_t layer_count = dzn_get_layer_count(image, range);
387 dzn_image_get_dxgi_format(image->vk.format,
392 switch (image->vk.image_type) {
395 image->vk.array_layers > 1 ?
400 if (image->vk.array_layers > 1) {
402 image->vk.samples > 1 ?
407 image->vk.samples > 1 ?
413 unreachable("Invalid image type");
447 dzn_image_get_rtv_desc(const struct dzn_image *image,
451 uint32_t layer_count = dzn_get_layer_count(image, range);
454 dzn_image_get_dxgi_format(image->vk.format,
459 switch (image->vk.image_type) {
462 image->vk.array_layers > 1 ?
466 if (image->vk.array_layers > 1) {
468 image->vk.samples > 1 ?
473 image->vk.samples > 1 ?
481 default: unreachable("Invalid image type\n");
533 dzn_image_layout_to_state(const struct dzn_image *image,
546 (image->desc.Flags & D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE) ?
651 dzn_DestroyImage(VkDevice device, VkImage image,
654 dzn_image_destroy(dzn_image_from_handle(image), pAllocator);
664 struct dzn_image *image = NULL;
669 image = dzn_image_from_handle(images[index]);
672 return image;
685 VK_FROM_HANDLE(dzn_image, image, bind_info->image);
698 assert(image->vk.aspects == swapchain_image->vk.aspects);
701 /* TODO: something something binding the image memory */
714 image->mem = mem;
715 image->mem_offset = bind_info->memoryOffset;
718 &image->desc,
722 (void **)&image->res)))
737 VK_FROM_HANDLE(dzn_image, image, pInfo->image);
762 D3D12_RESOURCE_ALLOCATION_INFO info = dzn_ID3D12Device2_GetResourceAllocationInfo(device->dev, 0, 1, &image->desc);
768 dzn_physical_device_get_mem_type_mask_for_resource(pdev, &image->desc),
779 if (image->vk.samples > 1 &&
791 VK_FROM_HANDLE(dzn_image, image, _image);
793 if (image->desc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER) {
797 layout->rowPitch = image->linear.row_stride;
800 layout->size = image->linear.size;
803 dzn_image_get_subresource_index(image, subresource,
808 ID3D12Device1_GetCopyableFootprints(device->dev, &image->desc,
850 bool ms = iview->vk.image->samples > 1;
861 iview->vk.image->usage & ~VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
959 assert(iview->vk.image->samples == 1);
1012 bool from_3d_image = iview->vk.image->image_type == VK_IMAGE_TYPE_3D;
1013 bool ms = iview->vk.image->samples > 1;
1084 bool ms = iview->vk.image->samples > 1;
1143 VK_FROM_HANDLE(dzn_image, image, pCreateInfo->image);
1146 ASSERTED uint32_t layer_count = dzn_get_layer_count(image, range);
1151 assert(range->baseMipLevel < image->vk.mip_levels);
1153 /* View usage should be a subset of image usage */
1161 switch (image->vk.image_type) {
1166 assert(range->baseArrayLayer + dzn_get_layer_count(image, range) - 1 <= image->vk.array_layers);
1169 assert(range->baseArrayLayer + dzn_get_layer_count(image, range) - 1
1170 <= u_minify(image->vk.extent.depth, range->baseMipLevel));