diff options
author | Chunming Zhou <david1.zhou@amd.com> | 2015-08-18 03:16:40 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-08-20 17:00:35 -0400 |
commit | bb977d3711ed1de1601b463e7fd5a43d82a2b077 (patch) | |
tree | 25ce4d1396258790d27ca111f246df39c49e1027 /drivers/gpu/drm/amd/amdgpu/amdgpu.h | |
parent | 6055f37afd8b68aaf512532e7e2dd651df2d7833 (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.h | 16 |
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; | |||
183 | struct amdgpu_ring; | 183 | struct amdgpu_ring; |
184 | struct amdgpu_semaphore; | 184 | struct amdgpu_semaphore; |
185 | struct amdgpu_cs_parser; | 185 | struct amdgpu_cs_parser; |
186 | struct amdgpu_job; | ||
186 | struct amdgpu_irq_src; | 187 | struct amdgpu_irq_src; |
187 | struct amdgpu_fpriv; | 188 | struct 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 | ||
1041 | struct amdgpu_ctx *amdgpu_ctx_get(struct amdgpu_fpriv *fpriv, uint32_t id); | 1042 | struct amdgpu_ctx *amdgpu_ctx_get(struct amdgpu_fpriv *fpriv, uint32_t id); |
1042 | int amdgpu_ctx_put(struct amdgpu_ctx *ctx); | 1043 | int amdgpu_ctx_put(struct amdgpu_ctx *ctx); |
1044 | struct amdgpu_ctx *amdgpu_ctx_get_ref(struct amdgpu_ctx *ctx); | ||
1043 | 1045 | ||
1044 | uint64_t amdgpu_ctx_add_fence(struct amdgpu_ctx *ctx, struct amdgpu_ring *ring, | 1046 | uint64_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 | ||
1270 | struct 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 | |||
1268 | static inline u32 amdgpu_get_ib_value(struct amdgpu_cs_parser *p, uint32_t ib_idx, int idx) | 1282 | static 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]; |