On Fri, Dec 15, 2017 at 8:27 AM, Chris Wilson <ch...@chris-wilson.co.uk>
wrote:

> Quoting Jason Ekstrand (2017-12-15 16:21:42)
> > On Fri, Dec 15, 2017 at 5:42 AM, Chris Wilson <ch...@chris-wilson.co.uk>
> wrote:
> >
> >     Every client (everyone instance that opens /dev/dri/card0 or the
> render
> >     nodes), receives a unique per-process GTT (where supported by the
> >     hardware, unfortunately that means only Broadwell and later). Every
> >     context created by each client, in turns receives its own unique
> ppGTT.
> >     This is overkill in terms of allocations and tracking, both in the
> >     kernel and in the hardware, as we could be sharing the per-client GTT
> >     amongst all of its contexts. The downside is that context
> segregation is
> >     reduced, a stray write from one context may affect another, and so we
> >     must honour any client requests that require robust segregation (e.g.
> >     ARB_robustness).
> >
> >     Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
> >     ---
> >      src/mesa/drivers/dri/i965/brw_bufmgr.c  | 23
> +++++++++++++++++------
> >      src/mesa/drivers/dri/i965/brw_bufmgr.h  |  2 +-
> >      src/mesa/drivers/dri/i965/brw_context.c |  2 +-
> >      3 files changed, 19 insertions(+), 8 deletions(-)
> >
> >     diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.c
> b/src/mesa/drivers/dri/
> >     i965/brw_bufmgr.c
> >     index 52b5bf97a1..d8a9635f5d 100644
> >     --- a/src/mesa/drivers/dri/i965/brw_bufmgr.c
> >     +++ b/src/mesa/drivers/dri/i965/brw_bufmgr.c
> >     @@ -1297,13 +1297,24 @@ init_cache_buckets(struct brw_bufmgr *bufmgr)
> >      }
> >
> >      uint32_t
> >     -brw_create_hw_context(struct brw_bufmgr *bufmgr)
> >     +brw_create_hw_context(struct brw_bufmgr *bufmgr, unsigned int flags)
> >      {
> >     -   struct drm_i915_gem_context_create create = { };
> >     -   int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE,
> &
> >     create);
> >     -   if (ret != 0) {
> >     -      DBG("DRM_IOCTL_I915_GEM_CONTEXT_CREATE failed: %s\n",
> strerror
> >     (errno));
> >     -      return 0;
> >     +   struct local_i915_gem_context_create_v2 {
> >     +      uint32_t ctx_id; /* out */
> >     +      uint32_t flags;
> >     +#define I915_GEM_CONTEXT_SHARE_GTT 0x1
> >     +      uint32_t share_ctx;
> >
> >
> > So, we've left share_ctx as 0.  What does that mean?  Does that mean
> that we
> > share with some context that was implicitly created by opening
> /dev/dri/card0?
> > Does it mean we share with the default context and therefore other
> processes?
>
> The default context, 0, is per fd.
>

So a second open() of /dev/dri/card0 will get a different default context?
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to