summaryrefslogtreecommitdiff
path: root/linux-core/i915_buffer.c
diff options
context:
space:
mode:
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2006-08-31 21:42:29 +0200
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2006-08-31 21:42:29 +0200
commit44f6d08988a77a640bea40d09cb61eec7566a5ce (patch)
tree0ce4e08474993190dd3065edb96b8976b04242df /linux-core/i915_buffer.c
parent03c137c5f8d44c374406efe19c01105fcf34d583 (diff)
Validation and fencing.
Diffstat (limited to 'linux-core/i915_buffer.c')
-rw-r--r--linux-core/i915_buffer.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/linux-core/i915_buffer.c b/linux-core/i915_buffer.c
index bedbd41c..ecc6cf8d 100644
--- a/linux-core/i915_buffer.c
+++ b/linux-core/i915_buffer.c
@@ -30,6 +30,8 @@
*/
#include "drmP.h"
+#include "i915_drm.h"
+#include "i915_drv.h"
drm_ttm_backend_t *i915_create_ttm_backend_entry(drm_device_t *dev, int cached)
{
@@ -38,3 +40,25 @@ drm_ttm_backend_t *i915_create_ttm_backend_entry(drm_device_t *dev, int cached)
else
return drm_agp_init_ttm_uncached(dev);
}
+
+int i915_fence_types(uint32_t buffer_flags, uint32_t *class, uint32_t *type)
+{
+ *class = 0;
+ if (buffer_flags & (DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE))
+ *type = 1;
+ else
+ *type = 3;
+ return 0;
+}
+
+int i915_invalidate_caches(drm_device_t *dev, uint32_t flags)
+{
+ uint32_t flush_cmd = MI_NO_WRITE_FLUSH;
+
+ if (flags & DRM_BO_FLAG_READ)
+ flush_cmd |= MI_READ_FLUSH;
+ if (flags & DRM_BO_FLAG_EXE)
+ flush_cmd |= MI_EXE_FLUSH;
+
+ return i915_emit_mi_flush(dev, flush_cmd);
+}