[waffle] [PATCH 1/6] wcore: Add support for robust access contexts.

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Wed Apr 6 15:59:25 UTC 2016


Signed-off-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
---
 include/waffle/waffle.h              |  4 ++++
 man/waffle_config.3.xml              | 24 ++++++++++++++++++++++++
 src/waffle/core/wcore_config_attrs.c |  3 +++
 src/waffle/core/wcore_config_attrs.h |  1 +
 src/waffle/core/wcore_util.c         |  1 +
 5 files changed, 33 insertions(+)

diff --git a/include/waffle/waffle.h b/include/waffle/waffle.h
index df0218e..b207f37 100644
--- a/include/waffle/waffle.h
+++ b/include/waffle/waffle.h
@@ -142,6 +142,10 @@ enum waffle_enum {
     WAFFLE_CONTEXT_DEBUG                                        = 0x0216,
 #endif
 
+#if WAFFLE_API_VERSION >= 0x106
+    WAFFLE_CONTEXT_ROBUST_ACCESS                                = 0x0217,
+#endif
+
     WAFFLE_RED_SIZE                                             = 0x0201,
     WAFFLE_GREEN_SIZE                                           = 0x0202,
     WAFFLE_BLUE_SIZE                                            = 0x0203,
diff --git a/man/waffle_config.3.xml b/man/waffle_config.3.xml
index a8cb98d..b8ae67a 100644
--- a/man/waffle_config.3.xml
+++ b/man/waffle_config.3.xml
@@ -412,6 +412,30 @@ struct waffle_config;
       </varlistentry>
 
       <varlistentry>
+        <term><constant>WAFFLE_CONTEXT_ROBUST_ACCESS</constant></term>
+        <listitem>
+          <para>
+            Feature test macro: <code>WAFFLE_API_VERSION >= 0x0106</code>.
+            (See <citerefentry><refentrytitle>waffle_feature_test_macros</refentrytitle><manvolnum>7</manvolnum></citerefentry>).
+          </para>
+          <para>
+            This attribute, if true, instructs
+            <citerefentry><refentrytitle><function>waffle_context_create</function></refentrytitle><manvolnum>3</manvolnum></citerefentry>
+            to create a robust access context.
+          </para>
+          <para>
+            Robust access contexts can implement additional runtime checks, such as bounds checks for various
+            operations.
+          </para>
+          <para>
+            This attribute is optional and its default value is false(0).
+
+            Valid values are true(1), false(0), and <constant>WAFFLE_DONT_CARE</constant>.
+          </para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
         <term><constant>WAFFLE_RED_SIZE</constant></term>
         <term><constant>WAFFLE_GREEN_SIZE</constant></term>
         <term><constant>WAFFLE_BLUE_SIZE</constant></term>
diff --git a/src/waffle/core/wcore_config_attrs.c b/src/waffle/core/wcore_config_attrs.c
index 4a2cb5d..9caa0cc 100644
--- a/src/waffle/core/wcore_config_attrs.c
+++ b/src/waffle/core/wcore_config_attrs.c
@@ -54,6 +54,7 @@ check_keys(const int32_t attrib_list[])
             case WAFFLE_CONTEXT_PROFILE:
             case WAFFLE_CONTEXT_FORWARD_COMPATIBLE:
             case WAFFLE_CONTEXT_DEBUG:
+            case WAFFLE_CONTEXT_ROBUST_ACCESS:
             case WAFFLE_RED_SIZE:
             case WAFFLE_GREEN_SIZE:
             case WAFFLE_BLUE_SIZE:
@@ -339,6 +340,7 @@ set_misc_defaults(struct wcore_config_attrs *attrs)
     // [2] EGL 1.4 spec (2011.04.06), Table 3.4
 
     attrs->context_debug        = false;
+    attrs->context_robust       = false;
 
     attrs->rgba_size            = 0;
     attrs->red_size             = 0;
@@ -414,6 +416,7 @@ parse_misc(struct wcore_config_attrs *attrs,
             CASE_INT(WAFFLE_SAMPLES, samples)
 
             CASE_BOOL(WAFFLE_CONTEXT_DEBUG, context_debug, false);
+            CASE_BOOL(WAFFLE_CONTEXT_ROBUST_ACCESS, context_robust, false);
             CASE_BOOL(WAFFLE_SAMPLE_BUFFERS, sample_buffers, DEFAULT_SAMPLE_BUFFERS);
             CASE_BOOL(WAFFLE_DOUBLE_BUFFERED, double_buffered, DEFAULT_DOUBLE_BUFFERED);
             CASE_BOOL(WAFFLE_ACCUM_BUFFER, accum_buffer, DEFAULT_ACCUM_BUFFER);
diff --git a/src/waffle/core/wcore_config_attrs.h b/src/waffle/core/wcore_config_attrs.h
index cca5e8b..e00e517 100644
--- a/src/waffle/core/wcore_config_attrs.h
+++ b/src/waffle/core/wcore_config_attrs.h
@@ -54,6 +54,7 @@ struct wcore_config_attrs {
 
     bool context_forward_compatible;
     bool context_debug;
+    bool context_robust;
     bool double_buffered;
     bool sample_buffers;
     bool accum_buffer;
diff --git a/src/waffle/core/wcore_util.c b/src/waffle/core/wcore_util.c
index c563fae..4c09164 100644
--- a/src/waffle/core/wcore_util.c
+++ b/src/waffle/core/wcore_util.c
@@ -97,6 +97,7 @@ wcore_enum_to_string(int32_t e)
         CASE(WAFFLE_CONTEXT_COMPATIBILITY_PROFILE);
         CASE(WAFFLE_CONTEXT_FORWARD_COMPATIBLE);
         CASE(WAFFLE_CONTEXT_DEBUG);
+        CASE(WAFFLE_CONTEXT_ROBUST_ACCESS);
         CASE(WAFFLE_RED_SIZE);
         CASE(WAFFLE_GREEN_SIZE);
         CASE(WAFFLE_BLUE_SIZE);
-- 
2.8.0



More information about the waffle mailing list