aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu.h
diff options
context:
space:
mode:
authorChunming Zhou <david1.zhou@amd.com>2015-08-18 03:16:40 -0400
committerAlex Deucher <alexander.deucher@amd.com>2015-08-20 17:00:35 -0400
commitbb977d3711ed1de1601b463e7fd5a43d82a2b077 (patch)
tree25ce4d1396258790d27ca111f246df39c49e1027 /drivers/gpu/drm/amd/amdgpu/amdgpu.h
parent6055f37afd8b68aaf512532e7e2dd651df2d7833 (diff)
drm/amdgpu: abstract amdgpu_job for scheduler
Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Reviewed-by: Christian K?nig <christian.koenig@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu.h')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 2fc58e658986..95d4969369a6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -183,6 +183,7 @@ struct amdgpu_vm;
183struct amdgpu_ring; 183struct amdgpu_ring;
184struct amdgpu_semaphore; 184struct amdgpu_semaphore;
185struct amdgpu_cs_parser; 185struct amdgpu_cs_parser;
186struct amdgpu_job;
186struct amdgpu_irq_src; 187struct amdgpu_irq_src;
187struct amdgpu_fpriv; 188struct amdgpu_fpriv;
188 189
@@ -871,7 +872,7 @@ int amdgpu_sched_ib_submit_kernel_helper(struct amdgpu_device *adev,
871 struct amdgpu_ring *ring, 872 struct amdgpu_ring *ring,
872 struct amdgpu_ib *ibs, 873 struct amdgpu_ib *ibs,
873 unsigned num_ibs, 874 unsigned num_ibs,
874 int (*free_job)(struct amdgpu_cs_parser *), 875 int (*free_job)(struct amdgpu_job *),
875 void *owner, 876 void *owner,
876 struct fence **fence); 877 struct fence **fence);
877 878
@@ -1040,6 +1041,7 @@ void amdgpu_ctx_fini(struct amdgpu_ctx *ctx);
1040 1041
1041struct amdgpu_ctx *amdgpu_ctx_get(struct amdgpu_fpriv *fpriv, uint32_t id); 1042struct amdgpu_ctx *amdgpu_ctx_get(struct amdgpu_fpriv *fpriv, uint32_t id);
1042int amdgpu_ctx_put(struct amdgpu_ctx *ctx); 1043int amdgpu_ctx_put(struct amdgpu_ctx *ctx);
1044struct amdgpu_ctx *amdgpu_ctx_get_ref(struct amdgpu_ctx *ctx);
1043 1045
1044uint64_t amdgpu_ctx_add_fence(struct amdgpu_ctx *ctx, struct amdgpu_ring *ring, 1046uint64_t amdgpu_ctx_add_fence(struct amdgpu_ctx *ctx, struct amdgpu_ring *ring,
1045 struct fence *fence, uint64_t queued_seq); 1047 struct fence *fence, uint64_t queued_seq);
@@ -1265,6 +1267,18 @@ struct amdgpu_cs_parser {
1265 struct amd_sched_fence *s_fence; 1267 struct amd_sched_fence *s_fence;
1266}; 1268};
1267 1269
1270struct amdgpu_job {
1271 struct amd_sched_job base;
1272 struct amdgpu_device *adev;
1273 struct amdgpu_ctx *ctx;
1274 struct drm_file *owner;
1275 struct amdgpu_ib *ibs;
1276 uint32_t num_ibs;
1277 struct mutex job_lock;
1278 struct amdgpu_user_fence uf;
1279 int (*free_job)(struct amdgpu_job *sched_job);
1280};
1281
1268static inline u32 amdgpu_get_ib_value(struct amdgpu_cs_parser *p, uint32_t ib_idx, int idx) 1282static inline u32 amdgpu_get_ib_value(struct amdgpu_cs_parser *p, uint32_t ib_idx, int idx)
1269{ 1283{
1270 return p->ibs[ib_idx].ptr[idx]; 1284 return p->ibs[ib_idx].ptr[idx];