svga: add function svga_linear_to_srgb()

This function will return compatible svga srgb format for corresponding
linear format

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
This commit is contained in:
Neha Bhende 2017-04-27 10:37:02 -07:00 committed by Brian Paul
parent 6e06e281c6
commit 1b415a5b28
2 changed files with 29 additions and 0 deletions

View file

@ -2337,3 +2337,29 @@ svga_format_is_shareable(const struct svga_screen *ss,
return false;
}
/**
* Return the sRGB format which corresponds to the given (linear) format.
* If there's no such sRGB format, return the format as-is.
*/
SVGA3dSurfaceFormat
svga_linear_to_srgb(SVGA3dSurfaceFormat format)
{
switch (format) {
case SVGA3D_R8G8B8A8_UNORM:
return SVGA3D_R8G8B8A8_UNORM_SRGB;
case SVGA3D_BC1_UNORM:
return SVGA3D_BC1_UNORM_SRGB;
case SVGA3D_BC2_UNORM:
return SVGA3D_BC2_UNORM_SRGB;
case SVGA3D_BC3_UNORM:
return SVGA3D_BC3_UNORM_SRGB;
case SVGA3D_B8G8R8A8_UNORM:
return SVGA3D_B8G8R8A8_UNORM_SRGB;
case SVGA3D_B8G8R8X8_UNORM:
return SVGA3D_B8G8R8X8_UNORM_SRGB;
default:
return format;
}
}

View file

@ -117,4 +117,7 @@ svga_format_is_shareable(const struct svga_screen *ss,
SVGA3dSurfaceFormat sformat,
unsigned bind,
bool verbose);
SVGA3dSurfaceFormat
svga_linear_to_srgb(SVGA3dSurfaceFormat format);
#endif /* SVGA_FORMAT_H_ */