Lines Matching refs:format

30 #include "util/format/u_format.h"
31 #include "util/format/u_format_s3tc.h"
140 unsigned format, swap, spi_format, colormask;
145 * as the SPI color format, because the hw doesn't allow
153 format = sctx->gfx_level >= GFX11 ? G_028C70_FORMAT_GFX11(surf->cb_color_info):
163 if (format == V_028C70_COLOR_8 || format == V_028C70_COLOR_16 ||
164 format == V_028C70_COLOR_32)
169 /* Check the colormask and export format. */
187 switch (format) {
894 /* Use the user format, not db_render_format, so that the polygon
897 switch (sctx->framebuffer.state.zsbuf->texture->format) {
1656 * format translation
1659 enum pipe_format format)
1661 const struct util_format_description *desc = util_format_description(format);
1667 if (format == PIPE_FORMAT_R11G11B10_FLOAT) /* isn't plain */
1671 format == PIPE_FORMAT_R9G9B9E5_FLOAT) /* isn't plain */
1682 int first_non_void = util_format_get_first_non_void_channel(format);
1797 static uint32_t si_translate_dbformat(enum pipe_format format)
1799 switch (format) {
1819 static uint32_t si_translate_texformat(struct pipe_screen *screen, enum pipe_format format,
1833 switch (format) {
1839 * Implemented as an 8_8_8_8 data format to fix texture
1846 if (format == PIPE_FORMAT_X24S8_UINT)
1880 switch (format) {
1899 switch (format) {
1922 switch (format) {
1935 switch (format) {
1948 switch (format) {
1965 if (format == PIPE_FORMAT_R9G9B9E5_FLOAT) {
1967 } else if (format == PIPE_FORMAT_R11G11B10_FLOAT) {
1996 /* This format fails on Gfx8/Carrizo´. */
1997 if (format == PIPE_FORMAT_A8R8_UNORM)
2208 static bool si_is_sampler_format_supported(struct pipe_screen *screen, enum pipe_format format)
2211 const struct util_format_description *desc = util_format_description(format);
2219 const struct gfx10_format *fmt = &ac_get_gfx10_format_table(&sscreen->info)[format];
2225 return si_translate_texformat(screen, format, desc,
2226 util_format_get_first_non_void_channel(format)) != ~0U;
2237 if (desc->format == PIPE_FORMAT_R11G11B10_FLOAT)
2311 if (desc->format == PIPE_FORMAT_R11G11B10_FLOAT)
2340 static unsigned si_is_vertex_format_supported(struct pipe_screen *screen, enum pipe_format format,
2351 desc = util_format_description(format);
2370 const struct gfx10_format *fmt = &ac_get_gfx10_format_table(&sscreen->info)[format];
2376 first_non_void = util_format_get_first_non_void_channel(format);
2385 enum pipe_format format)
2387 return si_translate_colorformat(gfx_level, format) != V_028C70_COLOR_INVALID &&
2388 si_translate_colorswap(gfx_level, format, false) != ~0U;
2391 static bool si_is_zs_format_supported(enum pipe_format format)
2393 return si_translate_dbformat(format) != V_028040_Z_INVALID;
2396 static bool si_is_format_supported(struct pipe_screen *screen, enum pipe_format format,
2418 if (util_format_get_num_planes(format) >= 2)
2440 if (format == PIPE_FORMAT_NONE && sample_count <= max_eqaa_samples)
2443 if (!sscreen->info.has_eqaa_surface_allocator || util_format_is_depth_or_stencil(format)) {
2457 screen, format, usage & (PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_SHADER_IMAGE));
2459 if (si_is_sampler_format_supported(screen, format))
2466 si_is_colorbuffer_format_supported(sscreen->info.gfx_level, format)) {
2469 if (!util_format_is_pure_integer(format) && !util_format_is_depth_or_stencil(format))
2473 if ((usage & PIPE_BIND_DEPTH_STENCIL) && si_is_zs_format_supported(format)) {
2478 retval |= si_is_vertex_format_supported(screen, format, PIPE_BIND_VERTEX_BUFFER);
2482 if (format == PIPE_FORMAT_R8_UINT ||
2483 format == PIPE_FORMAT_R16_UINT ||
2484 format == PIPE_FORMAT_R32_UINT)
2488 if ((usage & PIPE_BIND_LINEAR) && !util_format_is_compressed(format) &&
2499 static void si_choose_spi_color_formats(struct si_surface *surf, unsigned format, unsigned swap,
2504 ac_choose_spi_color_formats(format, swap, ntype, is_depth, true, &formats);
2516 unsigned format, swap, ntype, endian;
2521 desc = util_format_description(surf->base.format);
2550 format = si_translate_colorformat(sctx->gfx_level, surf->base.format);
2551 if (format == V_028C70_COLOR_INVALID) {
2552 PRINT_ERR("Invalid CB format: %d, disabling CB.\n", surf->base.format);
2554 assert(format != V_028C70_COLOR_INVALID);
2555 swap = si_translate_colorswap(sctx->gfx_level, surf->base.format, false);
2556 endian = si_colorformat_endian_swap(format);
2566 format == V_028C70_COLOR_8_24 || format == V_028C70_COLOR_24_8 ||
2567 format == V_028C70_COLOR_X24_8_32_FLOAT) {
2573 if (format == V_028C70_COLOR_8 || format == V_028C70_COLOR_8_8 ||
2574 format == V_028C70_COLOR_8_8_8_8)
2576 else if (format == V_028C70_COLOR_10_10_10_2 || format == V_028C70_COLOR_2_10_10_10)
2584 ntype != V_028C70_NUMBER_SRGB && format != V_028C70_COLOR_8_24 &&
2585 format != V_028C70_COLOR_24_8) |
2590 color_info |= S_028C70_FORMAT_GFX11(format);
2592 color_info |= S_028C70_FORMAT_GFX6(format) | S_028C70_ENDIAN(endian);
2597 S_028C74_FORCE_DST_ALPHA_1_GFX11(desc->swizzle[3] == PIPE_SWIZZLE_1 || util_format_is_intensity(surf->base.format)):
2598 S_028C74_FORCE_DST_ALPHA_1_GFX6(desc->swizzle[3] == PIPE_SWIZZLE_1 || util_format_is_intensity(surf->base.format));
2688 /* Determine pixel shader export format */
2689 si_choose_spi_color_formats(surf, format, swap, ntype, tex->is_depth);
2698 unsigned format, stencil_format;
2701 format = si_translate_dbformat(tex->db_render_format);
2704 assert(format != V_028040_Z_INVALID);
2705 if (format == V_028040_Z_INVALID)
2706 PRINT_ERR("Invalid DB format: %d, disabling DB.\n", tex->buffer.b.b.format);
2722 z_info = S_028038_FORMAT(format) |
2769 S_028040_FORMAT(format) | S_028040_NUM_SAMPLES(util_logbase2(tex->buffer.b.b.nr_samples));
3901 enum pipe_format format, unsigned offset, unsigned num_elements,
3908 desc = util_format_description(format);
3949 const struct gfx10_format *fmt = &ac_get_gfx10_format_table(&screen->info)[format];
3965 first_non_void = util_format_get_first_non_void_channel(format);
4036 * X24S8 is implemented as an 8_8_8_8 data format, to
4120 uint32_t format;
4127 format = V_008F0C_GFX10_FORMAT_FMASK8_S2_F1;
4130 format = V_008F0C_GFX10_FORMAT_FMASK8_S2_F2;
4133 format = V_008F0C_GFX10_FORMAT_FMASK8_S4_F1;
4136 format = V_008F0C_GFX10_FORMAT_FMASK8_S4_F2;
4139 format = V_008F0C_GFX10_FORMAT_FMASK8_S4_F4;
4142 format = V_008F0C_GFX10_FORMAT_FMASK8_S8_F1;
4145 format = V_008F0C_GFX10_FORMAT_FMASK16_S8_F2;
4148 format = V_008F0C_GFX10_FORMAT_FMASK32_S8_F4;
4151 format = V_008F0C_GFX10_FORMAT_FMASK32_S8_F8;
4154 format = V_008F0C_GFX10_FORMAT_FMASK16_S16_F1;
4157 format = V_008F0C_GFX10_FORMAT_FMASK32_S16_F2;
4160 format = V_008F0C_GFX10_FORMAT_FMASK64_S16_F4;
4163 format = V_008F0C_GFX10_FORMAT_FMASK64_S16_F8;
4170 fmask_state[1] = S_00A004_BASE_ADDRESS_HI(va >> 40) | S_00A004_FORMAT(format) |
4222 * X24S8 is implemented as an 8_8_8_8 data format, to
4311 /* S8 with Z32 HTILE needs a special format. */
4546 if (state->format == PIPE_FORMAT_X24S8_UINT || state->format == PIPE_FORMAT_S8X24_UINT ||
4547 state->format == PIPE_FORMAT_X32_S8X24_UINT || state->format == PIPE_FORMAT_S8_UINT)
4553 state->format, state->u.buf.size);
4555 si_make_buffer_descriptor(sctx->screen, si_resource(texture), state->format,
4571 pipe_format = state->format;
4583 /* Override format for the case where the flushed texture
4586 if (tex->flushed_depth_texture->buffer.b.b.format != tex->buffer.b.b.format)
4587 pipe_format = tex->flushed_depth_texture->buffer.b.b.format;
4620 vi_dcc_formats_are_incompatible(texture, state->u.tex.first_level, state->format);
4940 fix_fetch.u.format = AC_FETCH_FORMAT_FLOAT;
4943 fix_fetch.u.format = AC_FETCH_FORMAT_FIXED;
4947 fix_fetch.u.format = AC_FETCH_FORMAT_SINT;
4949 fix_fetch.u.format = AC_FETCH_FORMAT_SNORM;
4951 fix_fetch.u.format = AC_FETCH_FORMAT_SSCALED;
4956 fix_fetch.u.format = AC_FETCH_FORMAT_UINT;
4958 fix_fetch.u.format = AC_FETCH_FORMAT_UNORM;
4960 fix_fetch.u.format = AC_FETCH_FORMAT_USCALED;
4964 unreachable("bad format type");
4969 fix_fetch.u.format = AC_FETCH_FORMAT_FLOAT;
4972 unreachable("bad other format");
4988 fix_fetch.u.format = AC_FETCH_FORMAT_FIXED;
4999 (fix_fetch.u.log_size == 2 && fix_fetch.u.format != AC_FETCH_FORMAT_FLOAT &&
5000 fix_fetch.u.format != AC_FETCH_FORMAT_UINT &&
5001 fix_fetch.u.format != AC_FETCH_FORMAT_SINT);