aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2013-06-27 19:30:04 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-07-01 05:27:57 -0400
commit6670a5a5c77b8fc17962742f9bcf6f47e489aa62 (patch)
tree085677bfc6d01d63c5554909a98f0354c03b7f99 /drivers/gpu/drm
parent26b7c22465cbfaa40d7f2de6d5933a66106eb778 (diff)
drm/i915: make PDE|PTE platform specific
Nothing outside of i915_gem_gtt.c and more specifically, the relevant gen specific init function should need to know about number of PDEs, or PTEs per PD. Exposing this will only lead to circumventing using the upcoming VM abstraction. To accomplish this, move the defines into the .c file, rename the PDE define to be GEN6, and make the PTE count less of a magic number. The remaining code in the global gtt setup is a bit messy, but an upcoming patch will clean that one up. v2: Don't hardcode number of PDEs (Daniel + Jesse) Reworded commit message to reflect change. Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h2
-rw-r--r--drivers/gpu/drm/i915/i915_gem_gtt.c9
2 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index e9c8b588e14d..91c1fdc6a4ab 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -486,8 +486,6 @@ struct i915_gtt {
486}; 486};
487#define gtt_total_entries(gtt) ((gtt).total >> PAGE_SHIFT) 487#define gtt_total_entries(gtt) ((gtt).total >> PAGE_SHIFT)
488 488
489#define I915_PPGTT_PD_ENTRIES 512
490#define I915_PPGTT_PT_ENTRIES 1024
491struct i915_hw_ppgtt { 489struct i915_hw_ppgtt {
492 struct drm_device *dev; 490 struct drm_device *dev;
493 unsigned num_pd_entries; 491 unsigned num_pd_entries;
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 5101ab6869b4..216e7a19e63d 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -28,6 +28,9 @@
28#include "i915_trace.h" 28#include "i915_trace.h"
29#include "intel_drv.h" 29#include "intel_drv.h"
30 30
31#define GEN6_PPGTT_PD_ENTRIES 512
32#define I915_PPGTT_PT_ENTRIES (PAGE_SIZE / sizeof(gen6_gtt_pte_t))
33
31/* PPGTT stuff */ 34/* PPGTT stuff */
32#define GEN6_GTT_ADDR_ENCODE(addr) ((addr) | (((addr) >> 28) & 0xff0)) 35#define GEN6_GTT_ADDR_ENCODE(addr) ((addr) | (((addr) >> 28) & 0xff0))
33 36
@@ -278,7 +281,7 @@ static int gen6_ppgtt_init(struct i915_hw_ppgtt *ppgtt)
278 } else { 281 } else {
279 ppgtt->pte_encode = gen6_pte_encode; 282 ppgtt->pte_encode = gen6_pte_encode;
280 } 283 }
281 ppgtt->num_pd_entries = I915_PPGTT_PD_ENTRIES; 284 ppgtt->num_pd_entries = GEN6_PPGTT_PD_ENTRIES;
282 ppgtt->enable = gen6_ppgtt_enable; 285 ppgtt->enable = gen6_ppgtt_enable;
283 ppgtt->clear_range = gen6_ppgtt_clear_range; 286 ppgtt->clear_range = gen6_ppgtt_clear_range;
284 ppgtt->insert_entries = gen6_ppgtt_insert_entries; 287 ppgtt->insert_entries = gen6_ppgtt_insert_entries;
@@ -688,7 +691,7 @@ void i915_gem_init_global_gtt(struct drm_device *dev)
688 if (INTEL_INFO(dev)->gen <= 7) { 691 if (INTEL_INFO(dev)->gen <= 7) {
689 /* PPGTT pdes are stolen from global gtt ptes, so shrink the 692 /* PPGTT pdes are stolen from global gtt ptes, so shrink the
690 * aperture accordingly when using aliasing ppgtt. */ 693 * aperture accordingly when using aliasing ppgtt. */
691 gtt_size -= I915_PPGTT_PD_ENTRIES*PAGE_SIZE; 694 gtt_size -= GEN6_PPGTT_PD_ENTRIES * PAGE_SIZE;
692 } 695 }
693 696
694 i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size); 697 i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size);
@@ -699,7 +702,7 @@ void i915_gem_init_global_gtt(struct drm_device *dev)
699 702
700 DRM_ERROR("Aliased PPGTT setup failed %d\n", ret); 703 DRM_ERROR("Aliased PPGTT setup failed %d\n", ret);
701 drm_mm_takedown(&dev_priv->mm.gtt_space); 704 drm_mm_takedown(&dev_priv->mm.gtt_space);
702 gtt_size += I915_PPGTT_PD_ENTRIES*PAGE_SIZE; 705 gtt_size += GEN6_PPGTT_PD_ENTRIES * PAGE_SIZE;
703 } 706 }
704 i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size); 707 i915_gem_setup_global_gtt(dev, 0, mappable_size, gtt_size);
705} 708}