summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/ilo/intel_winsys.h30
-rw-r--r--src/gallium/winsys/intel/drm/intel_drm_winsys.c38
2 files changed, 66 insertions, 2 deletions
diff --git a/src/gallium/drivers/ilo/intel_winsys.h b/src/gallium/drivers/ilo/intel_winsys.h
index 4ee35d7f5a9..5a199e2e819 100644
--- a/src/gallium/drivers/ilo/intel_winsys.h
+++ b/src/gallium/drivers/ilo/intel_winsys.h
@@ -112,6 +112,17 @@ intel_winsys_read_reg(struct intel_winsys *winsys,
uint32_t reg, uint64_t *val);
/**
+ * Return the numbers of submissions lost due to GPU reset.
+ *
+ * \param active_lost Number of lost active/guilty submissions
+ * \param pending_lost Number of lost pending/innocent submissions
+ */
+int
+intel_winsys_get_reset_stats(struct intel_winsys *winsys,
+ struct intel_context *ctx,
+ uint32_t *active_lost,
+ uint32_t *pending_lost);
+/**
* Allocate a buffer object.
*
* \param name Informative description of the bo.
@@ -142,6 +153,19 @@ intel_winsys_alloc_buffer(struct intel_winsys *winsys,
}
/**
+ * Create a bo from a user memory pointer. Both \p userptr and (\p pitch * \p
+ * height) must be page aligned.
+ */
+struct intel_bo *
+intel_winsys_import_userptr(struct intel_winsys *winsys,
+ const char *name,
+ void *userptr,
+ enum intel_tiling_mode tiling,
+ unsigned long pitch,
+ unsigned long height,
+ unsigned long flags);
+
+/**
* Create a bo from a winsys handle.
*/
struct intel_bo *
@@ -223,12 +247,16 @@ intel_bo_unreference(struct intel_bo *bo);
* sequential writes, but reads would be very slow. Callers always have a
* linear view of the bo.
*
- * map_gtt_async() is similar to map_gtt(), except that it does not block.
+ * map_async() and map_gtt_async() work similar to map() and map_gtt()
+ * respectively, except that they do not block.
*/
void *
intel_bo_map(struct intel_bo *bo, bool write_enable);
void *
+intel_bo_map_async(struct intel_bo *bo);
+
+void *
intel_bo_map_gtt(struct intel_bo *bo);
void *
diff --git a/src/gallium/winsys/intel/drm/intel_drm_winsys.c b/src/gallium/winsys/intel/drm/intel_drm_winsys.c
index 9b94ac6b3a6..a41cbb04d72 100644
--- a/src/gallium/winsys/intel/drm/intel_drm_winsys.c
+++ b/src/gallium/winsys/intel/drm/intel_drm_winsys.c
@@ -55,6 +55,12 @@ struct intel_winsys {
struct drm_intel_decode *decode;
};
+static drm_intel_context *
+gem_ctx(const struct intel_context *ctx)
+{
+ return (drm_intel_context *) ctx;
+}
+
static drm_intel_bo *
gem_bo(const struct intel_bo *bo)
{
@@ -244,7 +250,7 @@ void
intel_winsys_destroy_context(struct intel_winsys *winsys,
struct intel_context *ctx)
{
- drm_intel_gem_context_destroy((drm_intel_context *) ctx);
+ drm_intel_gem_context_destroy(gem_ctx(ctx));
}
int
@@ -254,6 +260,18 @@ intel_winsys_read_reg(struct intel_winsys *winsys,
return drm_intel_reg_read(winsys->bufmgr, reg, val);
}
+int
+intel_winsys_get_reset_stats(struct intel_winsys *winsys,
+ struct intel_context *ctx,
+ uint32_t *active_lost,
+ uint32_t *pending_lost)
+{
+ uint32_t reset_count;
+
+ return drm_intel_get_reset_stats(gem_ctx(ctx),
+ &reset_count, active_lost, pending_lost);
+}
+
struct intel_bo *
intel_winsys_alloc_bo(struct intel_winsys *winsys,
const char *name,
@@ -308,6 +326,18 @@ intel_winsys_alloc_bo(struct intel_winsys *winsys,
}
struct intel_bo *
+intel_winsys_import_userptr(struct intel_winsys *winsys,
+ const char *name,
+ void *userptr,
+ enum intel_tiling_mode tiling,
+ unsigned long pitch,
+ unsigned long height,
+ unsigned long flags)
+{
+ return NULL;
+}
+
+struct intel_bo *
intel_winsys_import_handle(struct intel_winsys *winsys,
const char *name,
const struct winsys_handle *handle,
@@ -497,6 +527,12 @@ intel_bo_map(struct intel_bo *bo, bool write_enable)
}
void *
+intel_bo_map_async(struct intel_bo *bo)
+{
+ return NULL;
+}
+
+void *
intel_bo_map_gtt(struct intel_bo *bo)
{
int err;