mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 11:08:03 +02:00
dri: Handle configs with floating point pixel data
In order to handle pixel formats that consist of floating point data, enable floatMode field in the dri config, and set __DRI_ATTRIB_FLOAT_BIT in the render type attribute. Signed-off-by: Kevin Strasser <kevin.strasser@intel.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
parent
d4a9010338
commit
86d31c2c12
1 changed files with 5 additions and 0 deletions
|
|
@ -226,6 +226,7 @@ driCreateConfigs(mesa_format format,
|
|||
int blue_bits;
|
||||
int alpha_bits;
|
||||
bool is_srgb;
|
||||
bool is_float;
|
||||
|
||||
switch (format) {
|
||||
case MESA_FORMAT_B5G6R5_UNORM:
|
||||
|
|
@ -279,6 +280,7 @@ driCreateConfigs(mesa_format format,
|
|||
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;
|
||||
|
||||
num_modes = num_depth_stencil_bits * num_db_modes * num_accum_bits * num_msaa_modes;
|
||||
configs = calloc(num_modes + 1, sizeof *configs);
|
||||
|
|
@ -308,6 +310,7 @@ driCreateConfigs(mesa_format format,
|
|||
c++;
|
||||
|
||||
memset(modes, 0, sizeof *modes);
|
||||
modes->floatMode = is_float;
|
||||
modes->redBits = red_bits;
|
||||
modes->greenBits = green_bits;
|
||||
modes->blueBits = blue_bits;
|
||||
|
|
@ -481,6 +484,8 @@ driGetConfigAttribIndex(const __DRIconfig *config,
|
|||
case __DRI_ATTRIB_RENDER_TYPE:
|
||||
/* no support for color index mode */
|
||||
*value = __DRI_ATTRIB_RGBA_BIT;
|
||||
if (config->modes.floatMode)
|
||||
*value |= __DRI_ATTRIB_FLOAT_BIT;
|
||||
break;
|
||||
case __DRI_ATTRIB_CONFIG_CAVEAT:
|
||||
if (config->modes.visualRating == GLX_NON_CONFORMANT_CONFIG)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue