Lines Matching refs:format
34 format_to_ifmt(enum pipe_format format)
36 if (format == PIPE_FORMAT_Z24_UNORM_S8_UINT ||
37 format == PIPE_FORMAT_Z24X8_UNORM)
41 if (format == PIPE_FORMAT_Z16_UNORM || format == PIPE_FORMAT_Z32_FLOAT)
43 if (format == PIPE_FORMAT_S8_UINT)
45 if (format == PIPE_FORMAT_A8_UNORM)
49 bool is_int = util_format_is_pure_integer(format);
50 switch (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_RGB, PIPE_SWIZZLE_X)) {
56 if (util_format_is_float(format))
62 unreachable("bad format");
88 r2d_clear_value(struct tu_cs *cs, enum pipe_format format, const VkClearValue *val)
92 switch (format) {
95 /* cleared as r8g8b8a8_unorm using special format */
114 assert(!util_format_is_depth_or_stencil(format));
115 const struct util_format_description *desc = util_format_description(format);
116 enum a6xx_2d_ifmt ifmt = format_to_ifmt(format);
119 format == PIPE_FORMAT_R11G11B10_FLOAT);
152 * is normally R8_UINT for sampling/blitting purposes, to a unorm format.
193 enum pipe_format src_format = iview->format;
245 enum pipe_format format,
250 struct tu_native_format fmt = tu6_format_texture(format, TILE6_LINEAR);
252 fixup_src_format(&format, dst_format, &color_format);
258 .srgb = util_format_is_srgb(format),
272 enum pipe_format dst_format = iview->format;
307 r2d_dst_buffer(struct tu_cs *cs, enum pipe_format format, uint64_t va, uint32_t pitch,
310 struct tu_native_format fmt = tu6_format_color(format, TILE6_LINEAR);
312 fixup_dst_format(src_format, &format, &color_fmt);
319 .srgb = util_format_is_srgb(format)),
346 /* note: the only format with partial clearing is D24S8 */
853 r3d_clear_value(struct tu_cs *cs, enum pipe_format format, const VkClearValue *val)
863 switch (format) {
866 /* cleared as r8g8b8a8_unorm using special format */
888 assert(!util_format_is_depth_or_stencil(format));
967 enum pipe_format src_format = iview->format;
981 enum pipe_format format,
988 struct tu_native_format fmt = tu6_format_texture(format, TILE6_LINEAR);
990 fixup_src_format(&format, dst_format, &color_format);
993 COND(util_format_is_srgb(format), A6XX_TEX_CONST_0_SRGB) |
1017 enum pipe_format format,
1025 enum a6xx_format fmt = tu6_format_texture(format, TILE6_LINEAR).fmt;
1026 fixup_src_format(&format, dst_format, &fmt);
1028 /* patch the format so that depth/stencil get the right format and swizzle */
1060 enum pipe_format dst_format = iview->format;
1073 /* Use color format from RB_MRT_BUF_INFO. This register is relevant for
1107 r3d_dst_buffer(struct tu_cs *cs, enum pipe_format format, uint64_t va, uint32_t pitch,
1110 struct tu_native_format fmt = tu6_format_color(format, TILE6_LINEAR);
1113 fixup_dst_format(src_format, &format, &color_fmt);
1126 aspect_write_mask(enum pipe_format format, VkImageAspectFlags aspect_mask)
1130 /* note: the only format with partial writing is D24S8,
1131 * clear/blit uses the _AS_R8G8B8A8 format to access it
1133 if (format == PIPE_FORMAT_Z24_UNORM_S8_UINT) {
1269 void (*clear_value)(struct tu_cs *cs, enum pipe_format format, const VkClearValue *val);
1278 enum pipe_format format,
1286 void (*dst_buffer)(struct tu_cs *cs, enum pipe_format format, uint64_t va, uint32_t pitch,
1341 /* Decides the VK format to treat our data as for a memcpy-style blit. We have
1342 * to be a bit careful because we have to pick a format with matching UBWC
1357 unreachable("unhandled format size");
1361 enum pipe_format format = tu_vk_format_to_pipe_format(vk_format);
1363 /* For SNORM formats, copy them as the equivalent UNORM format. If we treat
1368 format = util_format_snorm_to_unorm(format);
1370 switch (format) {
1389 return format;
1453 enum pipe_format format,
1460 /* always use the AS_R8G8B8A8 format for these */
1461 if (format == PIPE_FORMAT_Z24_UNORM_S8_UINT ||
1462 format == PIPE_FORMAT_Z24X8_UNORM) {
1467 &image->layout[tu6_plane_index(image->vk.format, aspect_mask)];
1475 .format = tu_format_for_aspect(format, aspect_mask),
1486 enum pipe_format format,
1490 tu_image_view_copy_blit(iview, image, format, subres, layer, false);
1499 enum pipe_format format =
1500 tu6_plane_format(image->vk.format, tu6_plane_index(image->vk.format,
1502 tu_image_view_copy_blit(iview, image, format, subres, layer, false);
1558 src_image->vk.format == VK_FORMAT_BC1_RGB_UNORM_BLOCK ||
1559 src_image->vk.format == VK_FORMAT_BC1_RGB_SRGB_BLOCK ||
1566 /* use the right format in setup() for D32_S8
1570 tu6_plane_format(src_image->vk.format,
1571 tu6_plane_index(src_image->vk.format,
1574 tu6_plane_format(dst_image->vk.format,
1575 tu6_plane_index(src_image->vk.format,
1630 src_image->vk.format,
1631 dst_image->vk.format,
1648 if (src_image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT ||
1649 dst_image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
1668 copy_compressed(VkFormat format,
1674 if (!vk_format_is_compressed(format))
1677 uint32_t block_width = vk_format_get_blockwidth(format);
1678 uint32_t block_height = vk_format_get_blockheight(format);
1702 copy_format(dst_image->vk.format, info->imageSubresource.aspectMask);
1704 copy_format(dst_image->vk.format, info->imageSubresource.aspectMask);
1708 if (dst_image->vk.format == VK_FORMAT_D24_UNORM_S8_UINT &&
1722 copy_compressed(dst_image->vk.format, &offset, &extent, &src_width, &src_height);
1784 copy_format(src_image->vk.format, info->imageSubresource.aspectMask);
1786 copy_format(src_image->vk.format, info->imageSubresource.aspectMask);
1789 if (src_image->vk.format == VK_FORMAT_D24_UNORM_S8_UINT &&
1803 copy_compressed(src_image->vk.format, &offset, &extent, &dst_width, &dst_height);
1852 * formats like B5G5R5A1 have a separate linear-only format when sampling.
1854 * format instead, but this means that reinterpreting copies to and from
1857 * format, i.e. only when the other image is linear.
1861 is_swapped_format(enum pipe_format format)
1863 struct tu_native_format linear = tu6_format_texture(format, TILE6_LINEAR);
1864 struct tu_native_format tiled = tu6_format_texture(format, TILE6_3);
1876 vk_format_get_nr_components(image->vk.format) == 2;
1891 enum pipe_format format = PIPE_FORMAT_NONE;
1913 copy_compressed(src_image->vk.format, &src_offset, &extent, NULL, NULL);
1914 copy_compressed(dst_image->vk.format, &dst_offset, NULL, NULL, NULL);
1916 enum pipe_format dst_format = copy_format(dst_image->vk.format, info->dstSubresource.aspectMask);
1917 enum pipe_format src_format = copy_format(src_image->vk.format, info->srcSubresource.aspectMask);
1927 /* Images that share a format can always be copied directly because it's
1930 format = src_format;
1933 * other image's format and then do a regular blit.
1935 format = dst_format;
1937 format = src_format;
1945 /* If either format has a non-identity swap, then we can't copy
1950 format = dst_format;
1952 format = src_format;
2001 .format = tu_format_for_aspect(src_format, VK_IMAGE_ASPECT_COLOR_BIT),
2029 .format = tu_format_for_aspect(dst_format, VK_IMAGE_ASPECT_COLOR_BIT),
2045 tu_image_view_copy(&dst, dst_image, format, &info->dstSubresource, dst_offset.z);
2046 tu_image_view_copy(&src, src_image, format, &info->srcSubresource, src_offset.z);
2048 ops->setup(cmd, cs, format, format, info->dstSubresource.aspectMask,
2054 ops->src(cmd, cs, &src, i, VK_FILTER_NEAREST, format);
2055 ops->dst(cs, &dst, i, format);
2072 if (src_image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
2100 enum pipe_format format = block_size == 4 ? PIPE_FORMAT_R32_UINT : PIPE_FORMAT_R8_UNORM;
2103 ops->setup(cmd, cs, format, format, VK_IMAGE_ASPECT_COLOR_BIT, 0, false, false,
2111 ops->src_buffer(cmd, cs, format, src_va & ~63, 0, src_x + width, 1, format);
2112 ops->dst_buffer( cs, format, dst_va & ~63, 0, format);
2211 tu_vk_format_to_pipe_format(src_image->vk.format);
2213 tu_vk_format_to_pipe_format(dst_image->vk.format);
2310 assert(src->image->vk.format == dst->image->vk.format ||
2311 (vk_format_is_depth_or_stencil(src->image->vk.format) &&
2312 vk_format_is_depth_or_stencil(dst->image->vk.format)));
2314 bool src_separate_ds = src->image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT;
2315 bool dst_separate_ds = dst->image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT;
2325 resolve_sysmem(cmd, cs, src->image->vk.format, dst->image->vk.format,
2341 enum pipe_format format;
2342 if (image->vk.format == VK_FORMAT_E5B9G9R9_UFLOAT_PACK32) {
2343 format = PIPE_FORMAT_R32_UINT;
2345 format = tu6_plane_format(image->vk.format,
2346 tu6_plane_index(image->vk.format,
2357 ops->setup(cmd, cs, format, format, aspect_mask, 0, true, image->layout[0].ubwc,
2359 if (image->vk.format == VK_FORMAT_E5B9G9R9_UFLOAT_PACK32)
2362 ops->clear_value(cs, format, clear_value);
2374 tu_image_view_copy_blit(&dst, image, format, &(VkImageSubresourceLayers) {
2382 ops->dst(cs, &dst, i, format);
2419 if (image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
2602 pack_gmem_clear_value(const VkClearValue *val, enum pipe_format format, uint32_t clear_value[4])
2604 switch (format) {
2625 if (util_format_is_srgb(format)) {
2632 switch (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_RGB, PIPE_SWIZZLE_X)) {
2637 if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_RGB, PIPE_SWIZZLE_Y) == 6)
2643 if (util_format_is_snorm(format))
2645 else if (util_format_is_unorm(format))
2651 if (util_format_is_pure_integer(format))
2660 if (util_format_is_snorm(format))
2662 else if (util_format_is_unorm(format))
2664 else if (util_format_is_float(format))
2681 enum pipe_format format,
2687 tu_cs_emit(cs, A6XX_RB_BLIT_DST_INFO_COLOR_FORMAT(tu6_base_format(format)));
2698 pack_gmem_clear_value(value, format, clear_vals);
2718 enum pipe_format format = tu_vk_format_to_pipe_format(att->format);
2719 if (att->format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
2727 clear_gmem_attachment(cmd, cs, format, aspect_write_mask(format, mask),
2730 trace_end_gmem_clear(&cmd->trace, cs, att->format, att->samples);
2848 enum pipe_format format = tu_vk_format_to_pipe_format(vk_format);
2858 ops->setup(cmd, cs, format, format, clear_mask, 0, true, iview->view.ubwc_enabled,
2862 ops->clear_value(cs, format, value);
2872 ops->dst(cs, &iview->view, i, format);
2896 if (attachment->format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
2906 clear_sysmem_attachment(cmd, cs, attachment->format, attachment->clear_mask,
2919 if (vk_format_is_depth_or_stencil(attachment->format)) {
2963 .sample_0 = vk_format_is_int(attachment->format) ||
2964 vk_format_is_depth_or_stencil(attachment->format)));
2967 if (iview->image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
2988 if (attachment->format == VK_FORMAT_D32_SFLOAT_S8_UINT && separate_stencil) {
3000 blit_can_resolve(VkFormat format)
3002 const struct util_format_description *desc = vk_format_description(format);
3007 if (vk_format_is_snorm(format) || vk_format_is_srgb(format))
3017 switch (format) {
3094 (attachment->format == VK_FORMAT_D32_SFLOAT_S8_UINT && force_load);
3121 trace_end_gmem_load(&cmd->trace, cs, attachment->format, force_load);
3138 if (iview->image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
3211 if (iview->image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
3300 if (att->will_be_resolved && !blit_can_resolve(att->format))
3332 /* D32_SFLOAT_S8_UINT is quite special format: it has two planes,
3337 src->format == VK_FORMAT_D32_SFLOAT_S8_UINT &&
3338 dst->format == VK_FORMAT_S8_UINT;
3344 src->format == VK_FORMAT_D24_UNORM_S8_UINT &&
3345 dst->format == VK_FORMAT_S8_UINT;
3354 (a == gmem_a || blit_can_resolve(dst->format))) {
3364 trace_end_gmem_store(&cmd->trace, cs, dst->format, true, false);
3370 enum pipe_format src_format = tu_vk_format_to_pipe_format(src->format);
3374 enum pipe_format dst_format = tu_vk_format_to_pipe_format(dst->format);
3415 trace_end_gmem_store(&cmd->trace, cs, dst->format, false, unaligned);