All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael H. Nguyen" <michael.h.nguyen@intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Brad Volkin <bradley.d.volkin@intel.com>,
	intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v6 4/5] drm/i915: Mark shadow batch buffers as purgeable
Date: Tue, 09 Dec 2014 13:34:15 -0800	[thread overview]
Message-ID: <54876AD7.4050804@intel.com> (raw)
In-Reply-To: <20141209132129.GW27182@phenom.ffwll.local>



On 12/09/2014 05:21 AM, Daniel Vetter wrote:
> On Mon, Dec 08, 2014 at 02:33:49PM -0800, michael.h.nguyen@intel.com wrote:
>> From: Brad Volkin <bradley.d.volkin@intel.com>
>>
>> By adding a new exec_entry flag, we cleanly mark the shadow objects
>> as purgeable after they are on the active list.
>>
>> v2:
>> - Move 'shadow_batch_obj->madv = I915_MADV_WILLNEED' inside _get
>>    fnc (danvet, from v4 6/7 feedback)
>
> Seems duplicated now.
Good eyes! The duplicate does go away in 5/5 as part of moving much of 
the cmdparser code out of do_execbuffer() but it still doesn't make 4/5 
right. Will fix.

Thanks,
Mike
> -Daniel
>
>>
>> Issue: VIZ-4719
>> Signed-off-by: Brad Volkin <bradley.d.volkin@intel.com>
>> ---
>>   drivers/gpu/drm/i915/i915_gem_batch_pool.c |  2 ++
>>   drivers/gpu/drm/i915/i915_gem_execbuffer.c | 11 ++++++++++-
>>   2 files changed, 12 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_gem_batch_pool.c b/drivers/gpu/drm/i915/i915_gem_batch_pool.c
>> index e9349e3..9e0ec4b 100644
>> --- a/drivers/gpu/drm/i915/i915_gem_batch_pool.c
>> +++ b/drivers/gpu/drm/i915/i915_gem_batch_pool.c
>> @@ -128,5 +128,7 @@ i915_gem_batch_pool_get(struct i915_gem_batch_pool *pool,
>>   		list_add_tail(&obj->batch_pool_list, &pool->cache_list);
>>   	}
>>
>> +	obj->madv = I915_MADV_WILLNEED;
>> +
>>   	return obj;
>>   }
>> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
>> index fccfff5..2071938 100644
>> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
>> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
>> @@ -37,6 +37,7 @@
>>   #define  __EXEC_OBJECT_HAS_FENCE (1<<30)
>>   #define  __EXEC_OBJECT_NEEDS_MAP (1<<29)
>>   #define  __EXEC_OBJECT_NEEDS_BIAS (1<<28)
>> +#define  __EXEC_OBJECT_PURGEABLE (1<<27)
>>
>>   #define BATCH_OFFSET_BIAS (256*1024)
>>
>> @@ -226,7 +227,12 @@ i915_gem_execbuffer_unreserve_vma(struct i915_vma *vma)
>>   	if (entry->flags & __EXEC_OBJECT_HAS_PIN)
>>   		vma->pin_count--;
>>
>> -	entry->flags &= ~(__EXEC_OBJECT_HAS_FENCE | __EXEC_OBJECT_HAS_PIN);
>> +	if (entry->flags & __EXEC_OBJECT_PURGEABLE)
>> +		obj->madv = I915_MADV_DONTNEED;
>> +
>> +	entry->flags &= ~(__EXEC_OBJECT_HAS_FENCE |
>> +			  __EXEC_OBJECT_HAS_PIN |
>> +			  __EXEC_OBJECT_PURGEABLE);
>>   }
>>
>>   static void eb_destroy(struct eb_vmas *eb)
>> @@ -1410,6 +1416,8 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
>>   			goto err;
>>   		}
>>
>> +		shadow_batch_obj->madv = I915_MADV_WILLNEED;
>> +
>>   		ret = i915_gem_obj_ggtt_pin(shadow_batch_obj, 4096, 0);
>>   		if (ret)
>>   			goto err;
>> @@ -1433,6 +1441,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
>>
>>   			vma = i915_gem_obj_to_ggtt(shadow_batch_obj);
>>   			vma->exec_entry = &shadow_exec_entry;
>> +			vma->exec_entry->flags = __EXEC_OBJECT_PURGEABLE;
>>   			drm_gem_object_reference(&shadow_batch_obj->base);
>>   			list_add_tail(&vma->exec_list, &eb->vmas);
>>
>> --
>> 1.9.1
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2014-12-09 21:30 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-08 22:33 [PATCH v6 0/5] Command parser batch buffer copy michael.h.nguyen
2014-12-08 22:33 ` [PATCH v6 1/5] drm/i915: Implement a framework for batch buffer pools michael.h.nguyen
2014-12-09 13:18   ` Daniel Vetter
2014-12-09 19:42     ` Michael H. Nguyen
2014-12-10 11:06     ` Bloomfield, Jon
2014-12-10 16:33       ` Michael H. Nguyen
2014-12-10 16:41         ` Bloomfield, Jon
2014-12-10 17:05           ` Michael H. Nguyen
2014-12-08 22:33 ` [PATCH v6 2/5] drm/i915: Use batch pools with the command parser michael.h.nguyen
2014-12-08 22:33 ` [PATCH v6 3/5] drm/i915: Use batch length instead of object size in " michael.h.nguyen
2014-12-08 22:33 ` [PATCH v6 4/5] drm/i915: Mark shadow batch buffers as purgeable michael.h.nguyen
2014-12-09 13:21   ` Daniel Vetter
2014-12-09 21:34     ` Michael H. Nguyen [this message]
2014-12-11 13:26   ` Bloomfield, Jon
2014-12-11 18:56     ` Michael H. Nguyen
2014-12-08 22:33 ` [PATCH v6 5/5] drm/i915: Tidy up execbuffer command parsing code michael.h.nguyen
2014-12-09  2:05   ` shuang.he
2014-12-09 13:22   ` Daniel Vetter
2014-12-09 21:35     ` Michael H. Nguyen
2014-12-11 13:49   ` Bloomfield, Jon
2014-12-11 18:56     ` Michael H. Nguyen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54876AD7.4050804@intel.com \
    --to=michael.h.nguyen@intel.com \
    --cc=bradley.d.volkin@intel.com \
    --cc=daniel@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.