gallium/util: added util_format_linear()

This commit is contained in:
Brian Paul 2011-01-21 18:30:46 -07:00
parent 4c251b8861
commit 11fbdf726d

View file

@ -673,7 +673,8 @@ util_format_has_alpha(enum pipe_format format)
}
/**
* Return the matching SRGB format, or PIPE_FORMAT_NONE if none.
* Given a linear RGB colorspace format, return the corresponding SRGB
* format, or PIPE_FORMAT_NONE if none.
*/
static INLINE enum pipe_format
util_format_srgb(enum pipe_format format)
@ -710,6 +711,45 @@ util_format_srgb(enum pipe_format format)
}
}
/**
* Given an sRGB format, return the corresponding linear colorspace format.
* For non sRGB formats, return the format unchanged.
*/
static INLINE enum pipe_format
util_format_linear(enum pipe_format format)
{
switch (format) {
case PIPE_FORMAT_L8_SRGB:
return PIPE_FORMAT_L8_UNORM;
case PIPE_FORMAT_L8A8_SRGB:
return PIPE_FORMAT_L8A8_UNORM;
case PIPE_FORMAT_R8G8B8_SRGB:
return PIPE_FORMAT_R8G8B8_UNORM;
case PIPE_FORMAT_A8B8G8R8_SRGB:
return PIPE_FORMAT_A8B8G8R8_UNORM;
case PIPE_FORMAT_X8B8G8R8_SRGB:
return PIPE_FORMAT_X8B8G8R8_UNORM;
case PIPE_FORMAT_B8G8R8A8_SRGB:
return PIPE_FORMAT_B8G8R8A8_UNORM;
case PIPE_FORMAT_B8G8R8X8_SRGB:
return PIPE_FORMAT_B8G8R8X8_UNORM;
case PIPE_FORMAT_A8R8G8B8_SRGB:
return PIPE_FORMAT_A8R8G8B8_UNORM;
case PIPE_FORMAT_X8R8G8B8_SRGB:
return PIPE_FORMAT_X8R8G8B8_UNORM;
case PIPE_FORMAT_DXT1_SRGB:
return PIPE_FORMAT_DXT1_RGB;
case PIPE_FORMAT_DXT1_SRGBA:
return PIPE_FORMAT_DXT1_RGBA;
case PIPE_FORMAT_DXT3_SRGBA:
return PIPE_FORMAT_DXT3_RGBA;
case PIPE_FORMAT_DXT5_SRGBA:
return PIPE_FORMAT_DXT5_RGBA;
default:
return format;
}
}
/**
* Return the number of components stored.
* Formats with block size != 1x1 will always have 1 component (the block).