aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2012-06-04 17:42:51 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-06-14 11:36:19 -0400
commitdfabbcb4f6a277992037fe199bcc1bf6bd44a996 (patch)
tree5cb53f3a711f3ab35328c4757d455526353e56d3 /drivers/gpu/drm
parent12b0286f49947a6cdc9285032d918466a8c3f5f9 (diff)
drm/i915: use the default context
With the code to do HW context switches in place have the driver load the default context for the render ring when the driver loads. The default context will be an ever present context that is available to switch to at any time for the given ring. Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/i915/i915_gem_context.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index fb1e1d22572c..6a7b67d9f43f 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -97,6 +97,8 @@
97 97
98static struct i915_hw_context * 98static struct i915_hw_context *
99i915_gem_context_get(struct drm_i915_file_private *file_priv, u32 id); 99i915_gem_context_get(struct drm_i915_file_private *file_priv, u32 id);
100static int do_switch(struct drm_i915_gem_object *from_obj,
101 struct i915_hw_context *to, u32 seqno);
100 102
101static int get_context_size(struct drm_device *dev) 103static int get_context_size(struct drm_device *dev)
102{ 104{
@@ -225,6 +227,14 @@ static int create_default_context(struct drm_i915_private *dev_priv)
225 return ret; 227 return ret;
226 } 228 }
227 229
230 ret = do_switch(NULL, ctx, 0);
231 if (ret) {
232 i915_gem_object_unpin(ctx->obj);
233 do_destroy(ctx);
234 } else {
235 DRM_DEBUG_DRIVER("Default HW context loaded\n");
236 }
237
228 return ret; 238 return ret;
229} 239}
230 240