[Mesa-dev] [Intel-gfx] [PATCH] i965: Use default contexts when possible.
Ben Widawsky
ben at bwidawsk.net
Sun Feb 23 12:32:52 PST 2014
On Thu, Jan 02, 2014 at 07:50:35PM -1000, Ben Widawsky wrote:
> Will full PPGTT support it can be assumed that every file descriptor
> gets its own hardware context. As such, there is no need to allocate
> anew context in order to use the features provided by hardware contexts.
> Eliminating this extra context allocation saves both physical memory
> (currently PPGTT pages are pinned forever), GGTT space on IVB, and HSW,
> as well as the associated startup cost of allocating the second context
> - which can include an eviction in pathological cases.
>
> Unfortunately, this requires a libdrm version bump as it requires a new
> interface.
>
> NOTE: I am uncertain if the share context idea is valid. Needs mesa
> eyes.
>
> Cc: Kenneth Graunke <kenneth.w.graunke at intel.com>
> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
Hi Ken/whomever. Everything but the actual exposing of the full PPGTT
param from this series has been merged. If you can give me a pointer on
what needs doing here in mesa, I'll try again now that full PPGTT is
available in dinq.
Thanks.
> ---
> configure.ac | 2 +-
> src/mesa/drivers/dri/i965/brw_context.c | 9 ++++++++-
> 2 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index f75325d..a0ae0b3 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -29,7 +29,7 @@ AC_SUBST([OSMESA_VERSION])
> dnl Versions for external dependencies
> LIBDRM_REQUIRED=2.4.24
> LIBDRM_RADEON_REQUIRED=2.4.50
> -LIBDRM_INTEL_REQUIRED=2.4.49
> +LIBDRM_INTEL_REQUIRED=2.4.51
> LIBDRM_NVVIEUX_REQUIRED=2.4.33
> LIBDRM_NOUVEAU_REQUIRED="2.4.33 libdrm >= 2.4.41"
> LIBDRM_FREEDRENO_REQUIRED=2.4.39
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index 78c06fc..f5a66e1 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -674,7 +674,14 @@ brwCreateContext(gl_api api,
>
> intel_fbo_init(brw);
>
> - if (brw->gen >= 6) {
> + /* We assume that the hw_ctx is the first created for the file descriptor if
> + * this is not a share context. If that assumption turns false then we'll
> + * end up having hw_ctx for two contexts using the same actual context.
> + */
> + if (!shareCtx)
> + brw->hw_ctx = drm_intel_gem_default_context_get(brw->bufmgr);
> +
> + if (!brw->hw_ctx && brw->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.
> --
> 1.8.5.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ben Widawsky, Intel Open Source Technology Center
More information about the mesa-dev
mailing list