dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/radeon: use cached memory when evicting for vram on non agp
@ 2012-11-28 18:47 j.glisse
  2012-12-03 19:20 ` Jerome Glisse
  2012-12-03 20:54 ` Alex Deucher
  0 siblings, 2 replies; 3+ messages in thread
From: j.glisse @ 2012-11-28 18:47 UTC (permalink / raw)
  To: dri-devel; +Cc: Jerome Glisse

From: Jerome Glisse <jglisse@redhat.com>

Force the use of cached memory when evicting from vram on non agp
hardware. Also force write combine on agp hw. This is to insure
the minimum cache type change when allocating memory and improving
memory eviction especialy on pci/pcie hw.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
---
 drivers/gpu/drm/radeon/radeon_object.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
index b91118c..3f9f3bb 100644
--- a/drivers/gpu/drm/radeon/radeon_object.c
+++ b/drivers/gpu/drm/radeon/radeon_object.c
@@ -88,10 +88,20 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
 	if (domain & RADEON_GEM_DOMAIN_VRAM)
 		rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED |
 					TTM_PL_FLAG_VRAM;
-	if (domain & RADEON_GEM_DOMAIN_GTT)
-		rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT;
-	if (domain & RADEON_GEM_DOMAIN_CPU)
-		rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
+	if (domain & RADEON_GEM_DOMAIN_GTT) {
+		if (rbo->rdev->flags & RADEON_IS_AGP) {
+			rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_TT;
+		} else {
+			rbo->placements[c++] = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT;
+		}
+	}
+	if (domain & RADEON_GEM_DOMAIN_CPU) {
+		if (rbo->rdev->flags & RADEON_IS_AGP) {
+			rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_TT;
+		} else {
+			rbo->placements[c++] = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT;
+		}
+	}
 	if (!c)
 		rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
 	rbo->placement.num_placement = c;
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/radeon: use cached memory when evicting for vram on non agp
  2012-11-28 18:47 [PATCH] drm/radeon: use cached memory when evicting for vram on non agp j.glisse
@ 2012-12-03 19:20 ` Jerome Glisse
  2012-12-03 20:54 ` Alex Deucher
  1 sibling, 0 replies; 3+ messages in thread
From: Jerome Glisse @ 2012-12-03 19:20 UTC (permalink / raw)
  To: dri-devel; +Cc: Jerome Glisse

On Wed, Nov 28, 2012 at 1:47 PM,  <j.glisse@gmail.com> wrote:
> From: Jerome Glisse <jglisse@redhat.com>
>
> Force the use of cached memory when evicting from vram on non agp
> hardware. Also force write combine on agp hw. This is to insure
> the minimum cache type change when allocating memory and improving
> memory eviction especialy on pci/pcie hw.
>
> Signed-off-by: Jerome Glisse <jglisse@redhat.com>
> ---
>  drivers/gpu/drm/radeon/radeon_object.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
> index b91118c..3f9f3bb 100644
> --- a/drivers/gpu/drm/radeon/radeon_object.c
> +++ b/drivers/gpu/drm/radeon/radeon_object.c
> @@ -88,10 +88,20 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
>         if (domain & RADEON_GEM_DOMAIN_VRAM)
>                 rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED |
>                                         TTM_PL_FLAG_VRAM;
> -       if (domain & RADEON_GEM_DOMAIN_GTT)
> -               rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT;
> -       if (domain & RADEON_GEM_DOMAIN_CPU)
> -               rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
> +       if (domain & RADEON_GEM_DOMAIN_GTT) {
> +               if (rbo->rdev->flags & RADEON_IS_AGP) {
> +                       rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_TT;
> +               } else {
> +                       rbo->placements[c++] = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT;
> +               }
> +       }
> +       if (domain & RADEON_GEM_DOMAIN_CPU) {
> +               if (rbo->rdev->flags & RADEON_IS_AGP) {
> +                       rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_TT;
> +               } else {
> +                       rbo->placements[c++] = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT;
> +               }
> +       }
>         if (!c)
>                 rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
>         rbo->placement.num_placement = c;
> --
> 1.7.11.7
>

Anyone ? Bueller ?

Cheers,
Jerome

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/radeon: use cached memory when evicting for vram on non agp
  2012-11-28 18:47 [PATCH] drm/radeon: use cached memory when evicting for vram on non agp j.glisse
  2012-12-03 19:20 ` Jerome Glisse
@ 2012-12-03 20:54 ` Alex Deucher
  1 sibling, 0 replies; 3+ messages in thread
From: Alex Deucher @ 2012-12-03 20:54 UTC (permalink / raw)
  To: j.glisse; +Cc: Jerome Glisse, dri-devel

On Wed, Nov 28, 2012 at 1:47 PM,  <j.glisse@gmail.com> wrote:
> From: Jerome Glisse <jglisse@redhat.com>
>
> Force the use of cached memory when evicting from vram on non agp
> hardware. Also force write combine on agp hw. This is to insure
> the minimum cache type change when allocating memory and improving
> memory eviction especialy on pci/pcie hw.

Makes sense to me.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

>
> Signed-off-by: Jerome Glisse <jglisse@redhat.com>
> ---
>  drivers/gpu/drm/radeon/radeon_object.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
> index b91118c..3f9f3bb 100644
> --- a/drivers/gpu/drm/radeon/radeon_object.c
> +++ b/drivers/gpu/drm/radeon/radeon_object.c
> @@ -88,10 +88,20 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
>         if (domain & RADEON_GEM_DOMAIN_VRAM)
>                 rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED |
>                                         TTM_PL_FLAG_VRAM;
> -       if (domain & RADEON_GEM_DOMAIN_GTT)
> -               rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT;
> -       if (domain & RADEON_GEM_DOMAIN_CPU)
> -               rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
> +       if (domain & RADEON_GEM_DOMAIN_GTT) {
> +               if (rbo->rdev->flags & RADEON_IS_AGP) {
> +                       rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_TT;
> +               } else {
> +                       rbo->placements[c++] = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT;
> +               }
> +       }
> +       if (domain & RADEON_GEM_DOMAIN_CPU) {
> +               if (rbo->rdev->flags & RADEON_IS_AGP) {
> +                       rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_TT;
> +               } else {
> +                       rbo->placements[c++] = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT;
> +               }
> +       }
>         if (!c)
>                 rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
>         rbo->placement.num_placement = c;
> --
> 1.7.11.7
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-12-03 20:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-28 18:47 [PATCH] drm/radeon: use cached memory when evicting for vram on non agp j.glisse
2012-12-03 19:20 ` Jerome Glisse
2012-12-03 20:54 ` Alex Deucher

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox