[cogl/wip/rib/master-next: 28/35] tests: Adds a really simple cogl-info program
- From: Robert Bragg <rbragg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cogl/wip/rib/master-next: 28/35] tests: Adds a really simple cogl-info program
- Date: Fri, 14 Oct 2011 10:38:50 +0000 (UTC)
commit d8f5e2ad3d8a0fa2fae1e0c32f56a5d846bd7039
Author: Robert Bragg <robert linux intel com>
Date: Thu Oct 13 15:17:49 2011 +0100
tests: Adds a really simple cogl-info program
It could be nice to extend this as Cogl gains more APIs for
introspecting its own features but for now cogl-info just uses the new
cogl_foreach_feature() API to enumerate the available features for
a default context and prints those to the terminal.
examples/Makefile.am | 4 +-
examples/cogl-info.c | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 143 insertions(+), 1 deletions(-)
---
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 00919d0..1a98fa0 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -18,12 +18,14 @@ common_ldadd = \
$(COGL_DEP_LIBS) \
$(top_builddir)/cogl/libcogl.la
-programs = cogl-hello cogl-msaa cogl-repeat-modes
+programs = cogl-hello cogl-info cogl-msaa cogl-repeat-modes
examples_datadir = $(pkgdatadir)/examples-data
examples_data_DATA =
cogl_hello_SOURCES = cogl-hello.c
cogl_hello_LDADD = $(common_ldadd)
+cogl_info_SOURCES = cogl-info.c
+cogl_info_LDADD = $(common_ldadd)
cogl_msaa_SOURCES = cogl-msaa.c
cogl_msaa_LDADD = $(common_ldadd)
cogl_repeat_modes_SOURCES = cogl-repeat-modes.c
diff --git a/examples/cogl-info.c b/examples/cogl-info.c
new file mode 100644
index 0000000..6279db9
--- /dev/null
+++ b/examples/cogl-info.c
@@ -0,0 +1,140 @@
+#include <cogl/cogl.h>
+#include <glib.h>
+#include <stdio.h>
+
+struct {
+ CoglFeatureID feature;
+ const char *short_description;
+ const char *long_description;
+} features[] =
+{
+ {
+ COGL_FEATURE_ID_TEXTURE_NPOT_BASIC,
+ "Non power of two textures (basic)",
+ "The hardware supports non power of two textures, but you also "
+ "need to check the COGL_FEATURE_ID_TEXTURE_NPOT_MIPMAP and "
+ "COGL_FEATURE_ID_TEXTURE_NPOT_REPEAT features to know if the "
+ "hardware supports npot texture mipmaps or repeat modes other "
+ "than COGL_RENDERER_PIPELINE_WRAP_MODE_CLAMP_TO_EDGE respectively."
+ },
+ {
+ COGL_FEATURE_ID_TEXTURE_NPOT_MIPMAP,
+ "Non power of two textures (+ mipmap)",
+ "Mipmapping is supported in conjuntion with non power of two "
+ "textures."
+ },
+ {
+ COGL_FEATURE_ID_TEXTURE_NPOT_REPEAT,
+ "Non power of two textures (+ repeat modes)",
+ "Repeat modes other than "
+ "COGL_RENDERER_PIPELINE_WRAP_MODE_CLAMP_TO_EDGE are supported by "
+ "the hardware in conjunction with non power of two textures."
+ },
+ {
+ COGL_FEATURE_ID_TEXTURE_NPOT,
+ "Non power of two textures (fully featured)",
+ "Non power of two textures are supported by the hardware. This "
+ "is a equivalent to the COGL_FEATURE_ID_TEXTURE_NPOT_BASIC, "
+ "COGL_FEATURE_ID_TEXTURE_NPOT_MIPMAP and "
+ "COGL_FEATURE_ID_TEXTURE_NPOT_REPEAT features combined."
+ },
+ {
+ COGL_FEATURE_ID_TEXTURE_RECTANGLE,
+ "Unnormalized coordinate, rectangle textures",
+ "Support for rectangular textures with non-normalized texture "
+ "coordinates."
+ },
+ {
+ COGL_FEATURE_ID_TEXTURE_3D,
+ "3D texture support",
+ "3D texture support"
+ },
+ {
+ COGL_FEATURE_ID_OFFSCREEN,
+ "Offscreen rendering support",
+ "Offscreen rendering support"
+ },
+ {
+ COGL_FEATURE_ID_OFFSCREEN_MULTISAMPLE,
+ "Offscreen rendering with multisampling support",
+ "Offscreen rendering with multisampling support"
+ },
+ {
+ COGL_FEATURE_ID_ONSCREEN_MULTIPLE,
+ "Multiple onscreen framebuffers supported",
+ "Multiple onscreen framebuffers supported"
+ },
+ {
+ COGL_FEATURE_ID_GLSL,
+ "GLSL support",
+ "GLSL support"
+ },
+ {
+ COGL_FEATURE_ID_ARBFP,
+ "ARBFP support",
+ "ARBFP support"
+ },
+ {
+ COGL_FEATURE_ID_UNSIGNED_INT_INDICES,
+ "Unsigned integer indices",
+ "COGL_RENDERER_INDICES_TYPE_UNSIGNED_INT is supported in cogl_indices_new()."
+ },
+ {
+ COGL_FEATURE_ID_DEPTH_RANGE,
+ "cogl_pipeline_set_depth_range() support",
+ "cogl_pipeline_set_depth_range() support",
+ },
+ {
+ COGL_FEATURE_ID_POINT_SPRITE,
+ "Point sprite coordinates",
+ "cogl_pipeline_set_layer_point_sprite_coords_enabled() is supported"
+ },
+ {
+ COGL_FEATURE_ID_MAP_BUFFER_FOR_READ,
+ "Mapping buffers for reading",
+ "Mapping buffers for reading"
+ },
+ {
+ COGL_FEATURE_ID_MAP_BUFFER_FOR_WRITE,
+ "Mapping buffers for writing",
+ "Mapping buffers for writing"
+ },
+ {
+ COGL_FEATURE_ID_MIRRORED_REPEAT,
+ "Mirrored repeat wrap modes",
+ "Mirrored repeat wrap modes"
+ }
+};
+
+static void
+feature_cb (CoglFeatureID feature, void *user_data)
+{
+ int i;
+ for (i = 0; i < sizeof(features) / sizeof(features[0]); i++)
+ {
+ if (features[i].feature == feature)
+ {
+ printf (" Â %s\n", features[i].short_description);
+ return;
+ }
+ }
+ printf (" Â Unknown feature %d\n", feature);
+}
+
+int
+main (int argc, char **argv)
+{
+ CoglContext *ctx;
+ GError *error = NULL;
+
+ ctx = cogl_context_new (NULL, &error);
+ if (!ctx) {
+ fprintf (stderr, "Failed to create context: %s\n", error->message);
+ return 1;
+ }
+
+ g_print ("Features:\n");
+ cogl_foreach_feature (ctx, feature_cb, NULL);
+
+ return 0;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]