mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-16 08:58:30 +02:00
st/dri2: Pass pipe_format to driCreateConfigs
Gently start removing some of the open-coded format work here. Signed-off-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27709>
This commit is contained in:
parent
5cdfc9a811
commit
87955b67ae
1 changed files with 45 additions and 45 deletions
|
|
@ -140,7 +140,7 @@ dri_loader_get_cap(struct dri_screen *screen, enum dri_loader_cap cap)
|
|||
* \c format).
|
||||
*/
|
||||
static __DRIconfig **
|
||||
driCreateConfigs(mesa_format format,
|
||||
driCreateConfigs(enum pipe_format format,
|
||||
const uint8_t * depth_bits, const uint8_t * stencil_bits,
|
||||
unsigned num_depth_stencil_bits,
|
||||
const bool *db_modes, unsigned num_db_modes,
|
||||
|
|
@ -151,54 +151,55 @@ driCreateConfigs(mesa_format format,
|
|||
uint32_t masks[4];
|
||||
int shifts[4];
|
||||
} format_table[] = {
|
||||
/* MESA_FORMAT_B5G6R5_UNORM */
|
||||
/* PIPE_FORMAT_B5G6R5_UNORM */
|
||||
{{ 0x0000F800, 0x000007E0, 0x0000001F, 0x00000000 },
|
||||
{ 11, 5, 0, -1 }},
|
||||
/* MESA_FORMAT_B8G8R8X8_UNORM */
|
||||
/* PIPE_FORMAT_BGRX8888_UNORM & _SRGB */
|
||||
{{ 0x00FF0000, 0x0000FF00, 0x000000FF, 0x00000000 },
|
||||
{ 16, 8, 0, -1 }},
|
||||
/* MESA_FORMAT_B8G8R8A8_UNORM */
|
||||
/* PIPE_FORMAT_BGRA8888_UNORM & SRGB */
|
||||
{{ 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000 },
|
||||
{ 16, 8, 0, 24 }},
|
||||
/* MESA_FORMAT_B10G10R10X2_UNORM */
|
||||
/* PIPE_FORMAT_B10G10R10X2_UNORM */
|
||||
{{ 0x3FF00000, 0x000FFC00, 0x000003FF, 0x00000000 },
|
||||
{ 20, 10, 0, -1 }},
|
||||
/* MESA_FORMAT_B10G10R10A2_UNORM */
|
||||
/* PIPE_FORMAT_B10G10R10A2_UNORM */
|
||||
{{ 0x3FF00000, 0x000FFC00, 0x000003FF, 0xC0000000 },
|
||||
{ 20, 10, 0, 30 }},
|
||||
/* MESA_FORMAT_R8G8B8A8_UNORM */
|
||||
/* PIPE_FORMAT_RGBA8888_UNORM & SRGB */
|
||||
{{ 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 },
|
||||
{ 0, 8, 16, 24 }},
|
||||
/* MESA_FORMAT_R8G8B8X8_UNORM */
|
||||
/* PIPE_FORMAT_RGBX8888_UNORM & SRGB */
|
||||
{{ 0x000000FF, 0x0000FF00, 0x00FF0000, 0x00000000 },
|
||||
{ 0, 8, 16, -1 }},
|
||||
/* MESA_FORMAT_R10G10B10X2_UNORM */
|
||||
/* PIPE_FORMAT_R10G10B10X2_UNORM */
|
||||
{{ 0x000003FF, 0x000FFC00, 0x3FF00000, 0x00000000 },
|
||||
{ 0, 10, 20, -1 }},
|
||||
/* MESA_FORMAT_R10G10B10A2_UNORM */
|
||||
/* PIPE_FORMAT_R10G10B10A2_UNORM */
|
||||
{{ 0x000003FF, 0x000FFC00, 0x3FF00000, 0xC0000000 },
|
||||
{ 0, 10, 20, 30 }},
|
||||
/* MESA_FORMAT_RGBX_FLOAT16 */
|
||||
/* PIPE_FORMAT_R16G16B16X16_FLOAT */
|
||||
{{ 0, 0, 0, 0},
|
||||
{ 0, 16, 32, -1 }},
|
||||
/* MESA_FORMAT_RGBA_FLOAT16 */
|
||||
{ 0, 16, 32, -1 }}, /* XXX: flipped on big-endian */
|
||||
/* PIPE_FORMAT_R16G16B16A16_FLOAT */
|
||||
{{ 0, 0, 0, 0},
|
||||
{ 0, 16, 32, 48 }},
|
||||
/* MESA_FORMAT_B5G5R5A1_UNORM */
|
||||
{ 0, 16, 32, 48 }}, /* XXX: flipped on big-endian */
|
||||
/* PIPE_FORMAT_B5G5R5A1_UNORM */
|
||||
{{ 0x00007C00, 0x000003E0, 0x0000001F, 0x00008000 },
|
||||
{ 10, 5, 0, 15 }},
|
||||
/* MESA_FORMAT_R5G5B5A1_UNORM */
|
||||
/* PIPE_FORMAT_R5G5B5A1_UNORM */
|
||||
{{ 0x0000001F, 0x000003E0, 0x00007C00, 0x00008000 },
|
||||
{ 0, 5, 10, 15 }},
|
||||
/* MESA_FORMAT_B4G4R4A4_UNORM */
|
||||
/* PIPE_FORMAT_B4G4R4A4_UNORM */
|
||||
{{ 0x00000F00, 0x000000F0, 0x0000000F, 0x0000F000 },
|
||||
{ 8, 4, 0, 12 }},
|
||||
/* MESA_FORMAT_R4G4B4A4_UNORM */
|
||||
/* PIPE_FORMAT_R4G4B4A4_UNORM */
|
||||
{{ 0x0000000F, 0x000000F0, 0x00000F00, 0x0000F000 },
|
||||
{ 0, 4, 8, 12 }},
|
||||
};
|
||||
|
||||
const uint32_t * masks;
|
||||
mesa_format format_m = (mesa_format) format; /* aliased */
|
||||
const int * shifts;
|
||||
__DRIconfig **configs, **c;
|
||||
struct gl_config *modes;
|
||||
|
|
@ -213,83 +214,82 @@ driCreateConfigs(mesa_format format,
|
|||
bool is_float;
|
||||
|
||||
switch (format) {
|
||||
case MESA_FORMAT_B5G6R5_UNORM:
|
||||
case PIPE_FORMAT_B5G6R5_UNORM:
|
||||
masks = format_table[0].masks;
|
||||
shifts = format_table[0].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_B8G8R8X8_UNORM:
|
||||
case MESA_FORMAT_B8G8R8X8_SRGB:
|
||||
case PIPE_FORMAT_BGRX8888_UNORM:
|
||||
case PIPE_FORMAT_BGRX8888_SRGB:
|
||||
masks = format_table[1].masks;
|
||||
shifts = format_table[1].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_B8G8R8A8_UNORM:
|
||||
case MESA_FORMAT_B8G8R8A8_SRGB:
|
||||
case PIPE_FORMAT_BGRA8888_UNORM:
|
||||
case PIPE_FORMAT_BGRA8888_SRGB:
|
||||
masks = format_table[2].masks;
|
||||
shifts = format_table[2].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_R8G8B8A8_UNORM:
|
||||
case MESA_FORMAT_R8G8B8A8_SRGB:
|
||||
case PIPE_FORMAT_RGBA8888_UNORM:
|
||||
case PIPE_FORMAT_RGBA8888_SRGB:
|
||||
masks = format_table[5].masks;
|
||||
shifts = format_table[5].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_R8G8B8X8_UNORM:
|
||||
case MESA_FORMAT_R8G8B8X8_SRGB:
|
||||
case PIPE_FORMAT_RGBX8888_UNORM:
|
||||
case PIPE_FORMAT_RGBX8888_SRGB:
|
||||
masks = format_table[6].masks;
|
||||
shifts = format_table[6].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_B10G10R10X2_UNORM:
|
||||
case PIPE_FORMAT_B10G10R10X2_UNORM:
|
||||
masks = format_table[3].masks;
|
||||
shifts = format_table[3].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_B10G10R10A2_UNORM:
|
||||
case PIPE_FORMAT_B10G10R10A2_UNORM:
|
||||
masks = format_table[4].masks;
|
||||
shifts = format_table[4].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_RGBX_FLOAT16:
|
||||
case PIPE_FORMAT_R16G16B16X16_FLOAT:
|
||||
masks = format_table[9].masks;
|
||||
shifts = format_table[9].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_RGBA_FLOAT16:
|
||||
case PIPE_FORMAT_R16G16B16A16_FLOAT:
|
||||
masks = format_table[10].masks;
|
||||
shifts = format_table[10].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_R10G10B10X2_UNORM:
|
||||
case PIPE_FORMAT_R10G10B10X2_UNORM:
|
||||
masks = format_table[7].masks;
|
||||
shifts = format_table[7].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_R10G10B10A2_UNORM:
|
||||
case PIPE_FORMAT_R10G10B10A2_UNORM:
|
||||
masks = format_table[8].masks;
|
||||
shifts = format_table[8].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_B5G5R5A1_UNORM:
|
||||
case PIPE_FORMAT_B5G5R5A1_UNORM:
|
||||
masks = format_table[11].masks;
|
||||
shifts = format_table[11].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_R5G5B5A1_UNORM:
|
||||
case PIPE_FORMAT_R5G5B5A1_UNORM:
|
||||
masks = format_table[12].masks;
|
||||
shifts = format_table[12].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_B4G4R4A4_UNORM:
|
||||
case PIPE_FORMAT_B4G4R4A4_UNORM:
|
||||
masks = format_table[13].masks;
|
||||
shifts = format_table[13].shifts;
|
||||
break;
|
||||
case MESA_FORMAT_R4G4B4A4_UNORM:
|
||||
case PIPE_FORMAT_R4G4B4A4_UNORM:
|
||||
masks = format_table[14].masks;
|
||||
shifts = format_table[14].shifts;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "[%s:%u] Unknown framebuffer type %s (%d).\n",
|
||||
__func__, __LINE__,
|
||||
_mesa_get_format_name(format), format);
|
||||
__func__, __LINE__, util_format_name(format), format);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
red_bits = _mesa_get_format_bits(format, GL_RED_BITS);
|
||||
green_bits = _mesa_get_format_bits(format, GL_GREEN_BITS);
|
||||
blue_bits = _mesa_get_format_bits(format, GL_BLUE_BITS);
|
||||
alpha_bits = _mesa_get_format_bits(format, GL_ALPHA_BITS);
|
||||
is_srgb = _mesa_is_format_srgb(format);
|
||||
is_float = _mesa_get_format_datatype(format) == GL_FLOAT;
|
||||
red_bits = _mesa_get_format_bits(format_m, GL_RED_BITS);
|
||||
green_bits = _mesa_get_format_bits(format_m, GL_GREEN_BITS);
|
||||
blue_bits = _mesa_get_format_bits(format_m, GL_BLUE_BITS);
|
||||
alpha_bits = _mesa_get_format_bits(format_m, GL_ALPHA_BITS);
|
||||
is_srgb = _mesa_is_format_srgb(format_m);
|
||||
is_float = _mesa_get_format_datatype(format_m) == GL_FLOAT;
|
||||
|
||||
num_modes = num_depth_stencil_bits * num_db_modes * num_accum_bits * num_msaa_modes;
|
||||
configs = calloc(num_modes + 1, sizeof *configs);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue