diff options
-rw-r--r-- | src/mesa/drivers/dri/i915/intel_extensions.c | 8 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915/intel_screen.c | 21 |
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; |