diff options
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 18 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_screen.c | 7 |
2 files changed, 17 insertions, 8 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 69b7e4dead8..2f5fedbbb49 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -143,6 +143,23 @@ brwCreateContext(int api, return false; } + if (intel->gen >= 6) { + /* Create a new hardware context. Using a hardware context means that + * our GPU state will be saved/restored on context switch, allowing us + * to assume that the GPU is in the same state we left it in. + * + * This is required for transform feedback buffer offsets, query objects, + * and also allows us to reduce how much state we have to emit. + */ + intel->hw_ctx = drm_intel_gem_context_create(intel->bufmgr); + + if (!intel->hw_ctx) { + fprintf(stderr, "Gen6+ requires Kernel 3.6 or later.\n"); + ralloc_free(brw); + return false; + } + } + brw_init_surface_formats(brw); /* Initialize swrast, tnl driver tables: */ @@ -374,7 +391,6 @@ brwCreateContext(int api, brw->prim_restart.in_progress = false; brw->prim_restart.enable_cut_index = false; - intel->hw_ctx = drm_intel_gem_context_create(intel->bufmgr); brw_init_state( brw ); diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index 433f4ed2bd3..325304d266d 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -1301,13 +1301,6 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp) intelScreen->gen = 2; } - if (intelScreen->gen == 7 && - !intel_get_boolean(intelScreen->driScrnPriv, - I915_PARAM_HAS_GEN7_SOL_RESET)) { - fprintf(stderr, "i965 requires Kernel 3.3 or later.\n"); - return false; - } - intelScreen->hw_has_separate_stencil = intelScreen->gen >= 6; intelScreen->hw_must_use_separate_stencil = intelScreen->gen >= 7; |