[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