[Mesa-dev] [PATCH 3/5] Add a place to enable extensions that are common to all DRI drivers

Neil Roberts neil at linux.intel.com
Fri Jun 13 17:59:29 PDT 2014


This adds a function called _mesa_init_driver_extensions that is called by all
DRI-based drivers. The intention is that any extensions that are implemented
directly by _mesa_init_driver_functions without any driver-specific
entrypoints will be enabled here.
---
 src/mesa/drivers/common/driverfuncs.c          | 8 ++++++++
 src/mesa/drivers/common/driverfuncs.h          | 2 ++
 src/mesa/drivers/dri/i915/intel_extensions.c   | 3 +++
 src/mesa/drivers/dri/i965/intel_extensions.c   | 3 +++
 src/mesa/drivers/dri/nouveau/nouveau_context.c | 1 +
 src/mesa/drivers/dri/r200/r200_context.c       | 2 ++
 src/mesa/drivers/dri/radeon/radeon_context.c   | 2 ++
 src/mesa/drivers/dri/swrast/swrast.c           | 1 +
 8 files changed, 22 insertions(+)

diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c
index 6ece5d8..ee8b390 100644
--- a/src/mesa/drivers/common/driverfuncs.c
+++ b/src/mesa/drivers/common/driverfuncs.c
@@ -326,3 +326,11 @@ _mesa_init_driver_state(struct gl_context *ctx)
 
    ctx->Driver.DrawBuffer(ctx, ctx->Color.DrawBuffer[0]);
 }
+
+/**
+ * Enable extensions that are available for all DRI-based drivers.
+ */
+void
+_mesa_init_driver_extensions(struct gl_context *ctx)
+{
+}
diff --git a/src/mesa/drivers/common/driverfuncs.h b/src/mesa/drivers/common/driverfuncs.h
index 6b9a900..520c059 100644
--- a/src/mesa/drivers/common/driverfuncs.h
+++ b/src/mesa/drivers/common/driverfuncs.h
@@ -33,5 +33,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver);
 extern void
 _mesa_init_driver_state(struct gl_context *ctx);
 
+extern void
+_mesa_init_driver_extensions(struct gl_context *ctx);
 
 #endif
diff --git a/src/mesa/drivers/dri/i915/intel_extensions.c b/src/mesa/drivers/dri/i915/intel_extensions.c
index 76f608e..3a8744a 100644
--- a/src/mesa/drivers/dri/i915/intel_extensions.c
+++ b/src/mesa/drivers/dri/i915/intel_extensions.c
@@ -31,6 +31,7 @@
 #include "intel_context.h"
 #include "intel_extensions.h"
 #include "intel_reg.h"
+#include "drivers/common/driverfuncs.h"
 #include "utils.h"
 
 /**
@@ -44,6 +45,8 @@ intelInitExtensions(struct gl_context *ctx)
 
    assert(intel->gen == 2 || intel->gen == 3);
 
+   _mesa_init_driver_extensions(ctx);
+
    ctx->Extensions.ARB_draw_elements_base_vertex = true;
    ctx->Extensions.ARB_explicit_attrib_location = true;
    ctx->Extensions.ARB_framebuffer_object = true;
diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c b/src/mesa/drivers/dri/i965/intel_extensions.c
index 39d0ab5..fe47464 100644
--- a/src/mesa/drivers/dri/i965/intel_extensions.c
+++ b/src/mesa/drivers/dri/i965/intel_extensions.c
@@ -31,6 +31,7 @@
 #include "intel_batchbuffer.h"
 #include "intel_reg.h"
 #include "utils.h"
+#include "drivers/common/driverfuncs.h"
 
 /**
  * Test if we can use MI_LOAD_REGISTER_MEM from an untrusted batchbuffer.
@@ -162,6 +163,8 @@ intelInitExtensions(struct gl_context *ctx)
 
    assert(brw->gen >= 4);
 
+   _mesa_init_driver_extensions(ctx);
+
    ctx->Extensions.ARB_buffer_storage = true;
    ctx->Extensions.ARB_depth_buffer_float = true;
    ctx->Extensions.ARB_depth_clamp = true;
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c
index f8c8dc3..ad7ee86 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_context.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c
@@ -183,6 +183,7 @@ nouveau_context_init(struct gl_context *ctx, gl_api api,
 	}
 
 	/* Enable any supported extensions. */
+        _mesa_init_driver_extensions(ctx);
 	ctx->Extensions.EXT_blend_color = true;
 	ctx->Extensions.EXT_blend_minmax = true;
 	ctx->Extensions.EXT_texture_filter_anisotropic = true;
diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c
index 71dfcf3..93ca23d 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -366,6 +366,8 @@ GLboolean r200CreateContext( gl_api api,
    _math_matrix_ctr( &rmesa->tmpmat );
    _math_matrix_set_identity( &rmesa->tmpmat );
 
+   _mesa_init_driver_extensions(ctx);
+
    ctx->Extensions.ARB_occlusion_query = true;
    ctx->Extensions.ARB_point_sprite = true;
    ctx->Extensions.ARB_texture_border_clamp = true;
diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c
index 1ceb4ab..fd8e95b 100644
--- a/src/mesa/drivers/dri/radeon/radeon_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_context.c
@@ -328,6 +328,8 @@ r100CreateContext( gl_api api,
       _math_matrix_set_identity( &rmesa->tmpmat[i] );
    }
 
+   _mesa_init_driver_extensions(ctx);
+
    ctx->Extensions.ARB_occlusion_query = true;
    ctx->Extensions.ARB_texture_border_clamp = true;
    ctx->Extensions.ARB_texture_cube_map = true;
diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c
index 8881381..71e2184 100644
--- a/src/mesa/drivers/dri/swrast/swrast.c
+++ b/src/mesa/drivers/dri/swrast/swrast.c
@@ -720,6 +720,7 @@ dri_create_context(gl_api api,
     }
 
     _mesa_meta_init(mesaCtx);
+    _mesa_init_driver_extensions(mesaCtx);
     _mesa_enable_sw_extensions(mesaCtx);
 
     _mesa_compute_version(mesaCtx);
-- 
1.9.3



More information about the mesa-dev mailing list