Mesa (gallium-s3tc): st: st_equal_formats() function to compare gallium/ GL pixel formats
Brian Paul
brianp at kemper.freedesktop.org
Wed Apr 15 15:52:29 UTC 2009
Module: Mesa
Branch: gallium-s3tc
Commit: 66cdbf945a3ee75d7b8cba5135310a7ebec21289
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=66cdbf945a3ee75d7b8cba5135310a7ebec21289
Author: Brian Paul <brianp at vmware.com>
Date: Wed Apr 15 09:51:38 2009 -0600
st: st_equal_formats() function to compare gallium/GL pixel formats
---
src/mesa/state_tracker/st_format.c | 20 ++++++++++++++++++++
src/mesa/state_tracker/st_format.h | 4 ++++
2 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
index 9e2d60c..d507e3e 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -716,3 +716,23 @@ st_ChooseTextureFormat(GLcontext *ctx, GLint internalFormat,
return translate_gallium_format_to_mesa_format(pFormat);
}
+
+
+/**
+ * Test if a gallium format is equivalent to a GL format/type.
+ */
+GLboolean
+st_equal_formats(enum pipe_format pFormat, GLenum format, GLenum type)
+{
+ switch (pFormat) {
+ case PIPE_FORMAT_R8G8B8A8_UNORM:
+ return format == GL_RGBA && type == GL_UNSIGNED_BYTE;
+ case PIPE_FORMAT_B8G8R8A8_UNORM:
+ return format == GL_BGRA && type == GL_UNSIGNED_BYTE;
+ case PIPE_FORMAT_R5G6B5_UNORM:
+ return format == GL_RGB && type == GL_UNSIGNED_SHORT_5_6_5;
+ /* XXX more combos... */
+ default:
+ return GL_FALSE;
+ }
+}
diff --git a/src/mesa/state_tracker/st_format.h b/src/mesa/state_tracker/st_format.h
index 3f5ac32..7bbbe2d 100644
--- a/src/mesa/state_tracker/st_format.h
+++ b/src/mesa/state_tracker/st_format.h
@@ -76,4 +76,8 @@ st_ChooseTextureFormat(GLcontext * ctx, GLint internalFormat,
GLenum format, GLenum type);
+extern GLboolean
+st_equal_formats(enum pipe_format pFormat, GLenum format, GLenum type);
+
+
#endif /* ST_CB_TEXIMAGE_H */
More information about the mesa-commit
mailing list