summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/msm/msm_gpu.h
diff options
context:
space:
mode:
authorJordan Crouse <jcrouse@codeaurora.org>2017-10-20 11:06:56 -0600
committerRob Clark <robdclark@gmail.com>2017-10-28 11:01:36 -0400
commitcd414f3d931687eb1ebeb87533d85537e315f195 (patch)
tree67f173e8818494aafcf2e88ab5c421ecfdccb234 /drivers/gpu/drm/msm/msm_gpu.h
parentf7de15450e906ed6586b29bde609a5686cd0d034 (diff)
drm/msm: Move memptrs to msm_gpu
When we move to multiple ringbuffers we're going to store the data in the memptrs on a per-ring basis. In order to prepare for that move the current memptrs from the adreno namespace into msm_gpu. This is way cleaner and immediately lets us kill off some sub functions so there is much less cost later when we do move to per-ring structs. Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org> Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/msm/msm_gpu.h')
-rw-r--r--drivers/gpu/drm/msm/msm_gpu.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h
index a890176c27ce..8ddda059de34 100644
--- a/drivers/gpu/drm/msm/msm_gpu.h
+++ b/drivers/gpu/drm/msm/msm_gpu.h
@@ -59,7 +59,6 @@ struct msm_gpu_funcs {
struct msm_file_private *ctx);
void (*flush)(struct msm_gpu *gpu);
irqreturn_t (*irq)(struct msm_gpu *irq);
- uint32_t (*last_fence)(struct msm_gpu *gpu);
void (*recover)(struct msm_gpu *gpu);
void (*destroy)(struct msm_gpu *gpu);
#ifdef CONFIG_DEBUG_FS
@@ -68,6 +67,14 @@ struct msm_gpu_funcs {
#endif
};
+#define rbmemptr(gpu, member) \
+ ((gpu)->memptrs_iova + offsetof(struct msm_rbmemptrs, member))
+
+struct msm_rbmemptrs {
+ volatile uint32_t rptr;
+ volatile uint32_t fence;
+};
+
struct msm_gpu {
const char *name;
struct drm_device *dev;
@@ -130,11 +137,17 @@ struct msm_gpu {
struct work_struct recover_work;
struct list_head submit_list;
+
+ struct msm_rbmemptrs *memptrs;
+ struct drm_gem_object *memptrs_bo;
+ uint64_t memptrs_iova;
+
+
};
static inline bool msm_gpu_active(struct msm_gpu *gpu)
{
- return gpu->fctx->last_fence > gpu->funcs->last_fence(gpu);
+ return gpu->fctx->last_fence > gpu->memptrs->fence;
}
/* Perf-Counters: