summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/drivers/dri/i915/intel_extensions.c8
-rw-r--r--src/mesa/drivers/dri/i915/intel_screen.c21
2 files changed, 25 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i915/intel_extensions.c b/src/mesa/drivers/dri/i915/intel_extensions.c
index ab7820f1232..4f2c6fa34e3 100644
--- a/src/mesa/drivers/dri/i915/intel_extensions.c
+++ b/src/mesa/drivers/dri/i915/intel_extensions.c
@@ -92,8 +92,12 @@ intelInitExtensions(struct gl_context *ctx)
ctx->Extensions.ATI_separate_stencil = true;
ctx->Extensions.ATI_texture_env_combine3 = true;
ctx->Extensions.NV_texture_env_combine4 = true;
- ctx->Extensions.ARB_fragment_shader = true;
- ctx->Extensions.ARB_occlusion_query = true;
+
+ if (driQueryOptionb(&intel->optionCache, "fragment_shader"))
+ ctx->Extensions.ARB_fragment_shader = true;
+
+ if (driQueryOptionb(&intel->optionCache, "stub_occlusion_query"))
+ ctx->Extensions.ARB_occlusion_query = true;
}
if (intel->ctx.Mesa_DXTn
diff --git a/src/mesa/drivers/dri/i915/intel_screen.c b/src/mesa/drivers/dri/i915/intel_screen.c
index 5c7c06a9c10..fe861790074 100644
--- a/src/mesa/drivers/dri/i915/intel_screen.c
+++ b/src/mesa/drivers/dri/i915/intel_screen.c
@@ -62,6 +62,10 @@ DRI_CONF_BEGIN
DRI_CONF_DESC(en, "Enable early Z in classic mode (unstable, 945-only).")
DRI_CONF_OPT_END
+ DRI_CONF_OPT_BEGIN_B(fragment_shader, "true")
+ DRI_CONF_DESC(en, "Enable limited ARB_fragment_shader support on 915/945.")
+ DRI_CONF_OPT_END
+
DRI_CONF_SECTION_END
DRI_CONF_SECTION_QUALITY
DRI_CONF_FORCE_S3TC_ENABLE("false")
@@ -75,6 +79,10 @@ DRI_CONF_BEGIN
DRI_CONF_DISABLE_GLSL_LINE_CONTINUATIONS("false")
DRI_CONF_DISABLE_BLEND_FUNC_EXTENDED("false")
+ DRI_CONF_OPT_BEGIN_B(stub_occlusion_query, "false")
+ DRI_CONF_DESC(en, "Enable stub ARB_occlusion_query support on 915/945.")
+ DRI_CONF_OPT_END
+
DRI_CONF_OPT_BEGIN_B(shader_precompile, "true")
DRI_CONF_DESC(en, "Perform code generation at shader link time.")
DRI_CONF_OPT_END
@@ -1125,12 +1133,21 @@ set_max_gl_versions(struct intel_screen *screen)
__DRIscreen *psp = screen->driScrnPriv;
switch (screen->gen) {
- case 3:
+ case 3: {
+ bool has_fragment_shader = driQueryOptionb(&screen->optionCache, "fragment_shader");
+ bool has_occlusion_query = driQueryOptionb(&screen->optionCache, "stub_occlusion_query");
+
psp->max_gl_core_version = 0;
psp->max_gl_es1_version = 11;
- psp->max_gl_compat_version = 21;
psp->max_gl_es2_version = 20;
+
+ if (has_fragment_shader && has_occlusion_query) {
+ psp->max_gl_compat_version = 21;
+ } else {
+ psp->max_gl_compat_version = 14;
+ }
break;
+ }
case 2:
psp->max_gl_core_version = 0;
psp->max_gl_compat_version = 13;