diff options
author | Jerome Glisse <jglisse@redhat.com> | 2010-02-17 23:21:37 +0100 |
---|---|---|
committer | Jerome Glisse <jglisse@redhat.com> | 2010-02-17 23:21:37 +0100 |
commit | 8fb045b6022ab3fe9047554d763d26b9e3daa171 (patch) | |
tree | 68e20a605ce939d5f55d4878d571d4d4cc67f239 | |
parent | ac3df020bed65faaa15038698d0445f64516f8f3 (diff) |
more cleanup move most of the thing in radeon_device structure
-rw-r--r-- | r600_atom.c | 87 | ||||
-rw-r--r-- | r600_atom.h | 30 | ||||
-rw-r--r-- | r600_batch.c | 161 | ||||
-rw-r--r-- | radeon_atom.c | 8 | ||||
-rw-r--r-- | radeon_device.c | 4 | ||||
-rw-r--r-- | radeon_device.h | 16 |
6 files changed, 91 insertions, 215 deletions
diff --git a/r600_atom.c b/r600_atom.c index 7685810..4e849a0 100644 --- a/r600_atom.c +++ b/r600_atom.c @@ -38,10 +38,7 @@ int r600_cb_emit(struct radeon_device *rdev, /* FIXME delete */ void r600_tflat(struct radeon_atom *atom); -int r600_cb_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data) +int r600_cb_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data) { struct drm_r600_cb *cb; u32 bpe, tmp; @@ -52,7 +49,7 @@ int r600_cb_create(struct radeon_device *rdev, return -ENOMEM; memcpy(cb, data, sizeof(struct drm_r600_cb)); atom->state = cb; - r = radeon_atom_init(atom, &atoms->idr, &r600_cb_emit); + r = radeon_atom_init(atom, &rdev->idr, &r600_cb_emit); if (r) return r; atom->nflushes = 1; @@ -122,7 +119,7 @@ int r600_cb_create(struct radeon_device *rdev, __func__, __LINE__, cb->pitch); return -EINVAL; } - if ((cb->pitch * bpe) & (atoms->group_bytes - 1)) { + if ((cb->pitch * bpe) & (rdev->group_bytes - 1)) { dev_err(rdev->dev, "%s:%d cb pitch (%d) invalid\n", __func__, __LINE__, cb->pitch); return -EINVAL; @@ -134,7 +131,7 @@ int r600_cb_create(struct radeon_device *rdev, __func__, __LINE__, cb->pitch); return -EINVAL; } - if ((cb->pitch * 8 * bpe * cb->nsamples) & (atoms->group_bytes - 1)) { + if ((cb->pitch * 8 * bpe * cb->nsamples) & (rdev->group_bytes - 1)) { dev_err(rdev->dev, "%s:%d cb pitch (%d) invalid\n", __func__, __LINE__, cb->pitch); return -EINVAL; @@ -146,19 +143,19 @@ int r600_cb_create(struct radeon_device *rdev, } break; case V_0280A0_ARRAY_2D_TILED_THIN1: - if ((cb->pitch) & ((8 * atoms->nbanks) - 1)) { + if ((cb->pitch) & ((8 * rdev->nbanks) - 1)) { dev_err(rdev->dev, "%s:%d cb pitch (%d) invalid\n", __func__, __LINE__, cb->pitch); return -EINVAL; } tmp = cb->pitch * 8 * bpe * cb->nsamples; - tmp = tmp / atoms->nbanks; - if (tmp & (atoms->group_bytes - 1)) { + tmp = tmp / rdev->nbanks; + if (tmp & (rdev->group_bytes - 1)) { dev_err(rdev->dev, "%s:%d cb pitch (%d) invalid\n", __func__, __LINE__, cb->pitch); return -EINVAL; } - if (cb->height & ((8 * atoms->npipes) - 1)) { + if (cb->height & ((8 * rdev->npipes) - 1)) { dev_err(rdev->dev, "%s:%d cb height (%d) invalid\n", __func__, __LINE__, cb->height); return -EINVAL; @@ -223,10 +220,7 @@ fprintf(stderr, "%s %d pkts\n", __func__, atom->npkts); /* * r600_cb_cntl */ -int r600_cb_cntl_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data) +int r600_cb_cntl_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data) { struct drm_r600_cb_cntl *cb_cntl; int r; @@ -236,7 +230,7 @@ int r600_cb_cntl_create(struct radeon_device *rdev, return -ENOMEM; memcpy(cb_cntl, data, sizeof(struct drm_r600_cb_cntl)); atom->state = cb_cntl; - r = radeon_atom_init(atom, &atoms->idr, &radeon_atom_emit_default); + r = radeon_atom_init(atom, &rdev->idr, &radeon_atom_emit_default); if (r) return r; /* CB_TARGET_MASK */ @@ -282,10 +276,7 @@ fprintf(stderr, "%s %d pkts\n", __func__, atom->npkts); /* * r600_pa */ -int r600_pa_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data) +int r600_pa_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data) { struct drm_r600_pa *pa; int r; @@ -295,7 +286,7 @@ int r600_pa_create(struct radeon_device *rdev, return -ENOMEM; memcpy(pa, data, sizeof(struct drm_r600_pa)); atom->state = pa; - r = radeon_atom_init(atom, &atoms->idr, &radeon_atom_emit_default); + r = radeon_atom_init(atom, &rdev->idr, &radeon_atom_emit_default); if (r) return r; /* PA_SC_MPASS_PS_CNTL */ @@ -375,10 +366,7 @@ fprintf(stderr, "%s %d pkts\n", __func__, atom->npkts); /* * r600_vport */ -int r600_vport_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data) +int r600_vport_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data) { struct drm_r600_vport *vport; int r; @@ -388,7 +376,7 @@ int r600_vport_create(struct radeon_device *rdev, return -ENOMEM; memcpy(vport, data, sizeof(struct drm_r600_vport)); atom->state = vport; - r = radeon_atom_init(atom, &atoms->idr, &radeon_atom_emit_default); + r = radeon_atom_init(atom, &rdev->idr, &radeon_atom_emit_default); if (r) return r; /* PA_SC_VPORT_ZMIN_0 */ @@ -437,10 +425,7 @@ fprintf(stderr, "%s %d pkts\n", __func__, atom->npkts); /* * r600_blend */ -int r600_blend_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data) +int r600_blend_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data) { struct drm_r600_blend *blend; int r; @@ -450,7 +435,7 @@ int r600_blend_create(struct radeon_device *rdev, return -ENOMEM; memcpy(blend, data, sizeof(struct drm_r600_blend)); atom->state = blend; - r = radeon_atom_init(atom, &atoms->idr, &radeon_atom_emit_default); + r = radeon_atom_init(atom, &rdev->idr, &radeon_atom_emit_default); if (r) return r; /* CB_BLEND0_CONTROL */ @@ -475,10 +460,7 @@ fprintf(stderr, "%s %d pkts\n", __func__, atom->npkts); /* * r600_constant */ -int r600_constants_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data) +int r600_constants_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data) { struct drm_r600_constants *constants; int r; @@ -488,7 +470,7 @@ int r600_constants_create(struct radeon_device *rdev, return -ENOMEM; memcpy(constants, data, sizeof(struct drm_r600_constants)); atom->state = constants; - r = radeon_atom_init(atom, &atoms->idr, &radeon_atom_emit_default); + r = radeon_atom_init(atom, &rdev->idr, &radeon_atom_emit_default); if (r) return r; if ((constants->nconstants & 0x3) || (constants->offset & 0x3)) { @@ -524,10 +506,7 @@ int r600_db_emit(struct radeon_device *rdev, return r; } -int r600_db_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data) +int r600_db_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data) { struct drm_r600_db *db; u32 nslices, ntiles_per_slice, ntiles, bpe; @@ -539,7 +518,7 @@ int r600_db_create(struct radeon_device *rdev, return -ENOMEM; memcpy(db, data, sizeof(struct drm_r600_db)); atom->state = db; - r = radeon_atom_init(atom, &atoms->idr, &r600_db_emit); + r = radeon_atom_init(atom, &rdev->idr, &r600_db_emit); if (r) return r; atom->bo[0] = radeon_bo_lookup(rdev, db->db_handle); @@ -637,10 +616,7 @@ fprintf(stderr, "%s %d pkts\n", __func__, atom->npkts); /* * r600_db_cntl */ -int r600_db_cntl_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data) +int r600_db_cntl_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data) { struct drm_r600_db_cntl *db_cntl; int r; @@ -650,7 +626,7 @@ int r600_db_cntl_create(struct radeon_device *rdev, return -ENOMEM; memcpy(db_cntl, data, sizeof(struct drm_r600_db_cntl)); atom->state = db_cntl; - r = radeon_atom_init(atom, &atoms->idr, &radeon_atom_emit_default); + r = radeon_atom_init(atom, &rdev->idr, &radeon_atom_emit_default); if (r) return r; /* DB_STENCIL_CLEAR */ @@ -717,10 +693,7 @@ int r600_vs_shader_emit(struct radeon_device *rdev, return r; } -int r600_vs_shader_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data) +int r600_vs_shader_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data) { struct drm_r600_vs_shader *vs_shader; int r, i, j; @@ -731,7 +704,7 @@ int r600_vs_shader_create(struct radeon_device *rdev, return -ENOMEM; memcpy(vs_shader, data, sizeof(struct drm_r600_vs_shader)); atom->state = vs_shader; - r = radeon_atom_init(atom, &atoms->idr, &r600_vs_shader_emit); + r = radeon_atom_init(atom, &rdev->idr, &r600_vs_shader_emit); if (r) return r; /* SQ_PGM_START_FS */ @@ -813,10 +786,7 @@ int r600_ps_shader_emit(struct radeon_device *rdev, return r; } -int r600_ps_shader_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data) +int r600_ps_shader_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data) { struct drm_r600_ps_shader *ps_shader; u32 ninputs; @@ -827,7 +797,7 @@ int r600_ps_shader_create(struct radeon_device *rdev, return -ENOMEM; memcpy(ps_shader, data, sizeof(struct drm_r600_ps_shader)); atom->state = ps_shader; - r = radeon_atom_init(atom, &atoms->idr, &r600_ps_shader_emit); + r = radeon_atom_init(atom, &rdev->idr, &r600_ps_shader_emit); if (r) return r; /* SQ_PGM_START_PS */ @@ -860,11 +830,6 @@ fprintf(stderr, "%s %d pkts\n", __func__, atom->npkts); return 0; } - - - - - #define WPKT(a) (atom->pkts[atom->npkts++] = (a)) #define WPKT_RELOC(s)\ do {\ diff --git a/r600_atom.h b/r600_atom.h index 56d4fee..e7440a2 100644 --- a/r600_atom.h +++ b/r600_atom.h @@ -78,8 +78,6 @@ struct r600_batch { u32 nfs_resources; }; -#define R600_SHADER_SIZE (32 * 1024) - struct r600_batches { struct radeon_ib *ib; u32 npkts; @@ -89,42 +87,20 @@ struct r600_batches { u32 last_id[R600_BATCH_NATOMS]; }; -struct r600_atoms { - struct list_head blend_atoms; - struct list_head cb_atoms; - struct list_head cb_cntl_atoms; - struct list_head constants_atoms; - struct list_head db_atoms; - struct list_head db_cntl_atoms; - struct list_head pa_atoms; - struct list_head sq_atoms; - struct list_head vport_atoms; - struct list_head vs_shader_atoms; - struct list_head ps_shader_atoms; - struct idr idr; - struct mutex mutex; - struct r600_batches batches; - unsigned npipes; - unsigned nbanks; - unsigned group_bytes; -}; - /* R600 */ extern void r600_shader_disassemble(u32 *bytecode, u32 ndwords); extern int r600_shader_build_fs(struct radeon_device *rdev, u32 *bytecode, u32 *ndwords, struct drm_r600_vs_input *inputs, struct drm_r600_vs_shader *vs); -extern int r600_atoms_init(struct radeon_device *rdev, struct r600_atoms *atoms); -extern void r600_atoms_release(struct radeon_device *rdev, struct r600_atoms *atoms); +extern int r600_atoms_init(struct radeon_device *rdev); +extern void r600_atoms_release(struct radeon_device *rdev); extern int r600_atom_create(struct radeon_device *rdev, - struct r600_atoms *atoms, struct drm_radeon_atom *patom, struct radeon_atom **atomptr); extern int r600_batches_queue(struct radeon_device *rdev, - struct r600_atoms *atoms, struct drm_r600_batch *batch); -extern int r600_batches_flush(struct radeon_device *rdev, struct r600_atoms *atoms); +extern int r600_batches_flush(struct radeon_device *rdev); /* R700 */ extern void r700_batches_states_default(struct radeon_device *rdev, struct r600_batches *batches); diff --git a/r600_batch.c b/r600_batch.c index db44a0b..90881d9 100644 --- a/r600_batch.c +++ b/r600_batch.c @@ -19,62 +19,20 @@ #include "r600d.h" /* state creation functions prototype */ -int r600_cb_emit(struct radeon_device *rdev, - struct radeon_atom *atom, - void *data, - struct radeon_ib *ib); -int r600_cb_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data); -int r600_cb_cntl_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data); -int r600_pa_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data); -int r600_vport_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data); -int r600_blend_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data); -int r600_constants_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data); -int r600_db_emit(struct radeon_device *rdev, - struct radeon_atom *atom, - void *data, - struct radeon_ib *ib); -int r600_db_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data); -int r600_db_cntl_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data); -int r600_vs_shader_emit(struct radeon_device *rdev, - struct radeon_atom *atom, - void *data, - struct radeon_ib *ib); -int r600_vs_shader_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data); -int r600_ps_shader_emit(struct radeon_device *rdev, - struct radeon_atom *atom, - void *data, - struct radeon_ib *ib); -int r600_ps_shader_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct radeon_atom *atom, - void *data); +int r600_cb_emit(struct radeon_device *rdev, struct radeon_atom *atom, void *data, struct radeon_ib *ib); +int r600_cb_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data); +int r600_cb_cntl_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data); +int r600_pa_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data); +int r600_vport_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data); +int r600_blend_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data); +int r600_constants_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data); +int r600_db_emit(struct radeon_device *rdev, struct radeon_atom *atom, void *data, struct radeon_ib *ib); +int r600_db_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data); +int r600_db_cntl_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data); +int r600_vs_shader_emit(struct radeon_device *rdev, struct radeon_atom *atom, void *data, struct radeon_ib *ib); +int r600_vs_shader_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data); +int r600_ps_shader_emit(struct radeon_device *rdev, struct radeon_atom *atom, void *data, struct radeon_ib *ib); +int r600_ps_shader_create(struct radeon_device *rdev, struct radeon_atom *atom, void *data); /* * helpers functions @@ -247,39 +205,37 @@ out_err: return r; } -int r600_batches_queue(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct drm_r600_batch *batch) +int r600_batches_queue(struct radeon_device *rdev, struct drm_r600_batch *batch) { struct r600_batch *rbatch; - struct r600_batches *batches = &atoms->batches; + struct r600_batches *batches = &rdev->batches; int r, i, j; r = r600_batch_alloc(&rbatch); if (r) return r; memcpy(&rbatch->inputs, &batch->inputs, sizeof(struct r600_vs_input)); - mutex_lock(&atoms->mutex); + mutex_lock(&rdev->mutex); i = 0; if (batch->blend == NULL || batch->cb_cntl == NULL || batch->pa == NULL || batch->vport == NULL || batch->cb == NULL || batch->db_cntl == NULL || batch->vs_shader == NULL || batch->ps_shader == NULL) { - mutex_unlock(&atoms->mutex); + mutex_unlock(&rdev->mutex); free(rbatch); dev_err(rdev->dev, "invalid batch\n"); return -EINVAL; } - rbatch->shaders = radeon_bo_open(rdev->radeon->bom, 0, R600_SHADER_SIZE, 0, RADEON_GEM_DOMAIN_GTT, 0); + rbatch->shaders = radeon_bo_open(rdev->radeon->bom, 0, 4096 * 16, 0, RADEON_GEM_DOMAIN_GTT, 0); if (rbatch->shaders == NULL) { - mutex_unlock(&atoms->mutex); + mutex_unlock(&rdev->mutex); kfree(rbatch); dev_err(rdev->dev, "can't create buffer for shaders\n"); return -ENOMEM; } r = radeon_bo_map(rbatch->shaders, 1); if (r) { - mutex_unlock(&atoms->mutex); + mutex_unlock(&rdev->mutex); kfree(rbatch); dev_err(rdev->dev, "can't map buffer for shaders\n"); return r; @@ -362,7 +318,7 @@ reprocess: } batches->npkts += rbatch->npkts; list_add_tail(&rbatch->list, &batches->batches); - mutex_unlock(&atoms->mutex); + mutex_unlock(&rdev->mutex); return 0; out_err: for (i = 0; i < R600_BATCH_NATOMS; i++) { @@ -397,53 +353,38 @@ static void r600_batches_cleanup_locked(struct radeon_device *rdev, struct r600_ batches->ib = NULL; } -int r600_batches_flush(struct radeon_device *rdev, struct r600_atoms *atoms) +int r600_batches_flush(struct radeon_device *rdev) { int r; - mutex_lock(&atoms->mutex); - r = r600_batches_flush_locked(rdev, &atoms->batches); - mutex_unlock(&atoms->mutex); + mutex_lock(&rdev->mutex); + r = r600_batches_flush_locked(rdev, &rdev->batches); + mutex_unlock(&rdev->mutex); return r; } -int r600_atoms_init(struct radeon_device *rdev, struct r600_atoms *atoms) +int r600_atoms_init(struct radeon_device *rdev) { - memset(atoms, 0, sizeof(*atoms)); - mutex_init(&atoms->mutex); - INIT_LIST_HEAD(&atoms->blend_atoms); - INIT_LIST_HEAD(&atoms->cb_atoms); - INIT_LIST_HEAD(&atoms->cb_cntl_atoms); - INIT_LIST_HEAD(&atoms->constants_atoms); - INIT_LIST_HEAD(&atoms->db_atoms); - INIT_LIST_HEAD(&atoms->db_cntl_atoms); - INIT_LIST_HEAD(&atoms->pa_atoms); - INIT_LIST_HEAD(&atoms->sq_atoms); - INIT_LIST_HEAD(&atoms->vport_atoms); - INIT_LIST_HEAD(&atoms->vs_shader_atoms); - INIT_LIST_HEAD(&atoms->ps_shader_atoms); - idr_init(&atoms->idr); - atoms->npipes = 2; - atoms->nbanks = 4; - atoms->group_bytes = 256; - return r600_batches_init(rdev, &atoms->batches); + mutex_init(&rdev->mutex); + idr_init(&rdev->idr); + rdev->npipes = 2; + rdev->nbanks = 4; + rdev->group_bytes = 256; + return r600_batches_init(rdev, &rdev->batches); } -void r600_atoms_release(struct radeon_device *rdev, struct r600_atoms *atoms) +void r600_atoms_release(struct radeon_device *rdev) { - mutex_lock(&atoms->mutex); - r600_batches_cleanup_locked(rdev, &atoms->batches); - idr_destroy(&atoms->idr); - mutex_unlock(&atoms->mutex); + mutex_lock(&rdev->mutex); + r600_batches_cleanup_locked(rdev, &rdev->batches); + idr_destroy(&rdev->idr); + mutex_unlock(&rdev->mutex); } /* * r600 atom core functions */ -int r600_atom_create(struct radeon_device *rdev, - struct r600_atoms *atoms, - struct drm_radeon_atom *patom, - struct radeon_atom **atomptr) +int r600_atom_create(struct radeon_device *rdev, struct drm_radeon_atom *patom, struct radeon_atom **atomptr) { struct radeon_atom *atom; struct r600_state_container *cont; @@ -458,55 +399,55 @@ int r600_atom_create(struct radeon_device *rdev, patom->id = 0; radeon_device_set_bo_list(rdev, cont->nbo, cont->bo); atom->type = patom->type; - mutex_lock(&atoms->mutex); + mutex_lock(&rdev->mutex); switch (patom->type) { case R600_ATOM_CB: - r = r600_cb_create(rdev, atoms, atom, cont->data); + r = r600_cb_create(rdev, atom, cont->data); if (r) return r; break; case R600_ATOM_CB_CNTL: - r = r600_cb_cntl_create(rdev, atoms, atom, cont->data); + r = r600_cb_cntl_create(rdev, atom, cont->data); if (r) return r; break; case R600_ATOM_PA: - r = r600_pa_create(rdev, atoms, atom, cont->data); + r = r600_pa_create(rdev, atom, cont->data); if (r) return r; break; case R600_ATOM_VPORT: - r = r600_vport_create(rdev, atoms, atom, cont->data); + r = r600_vport_create(rdev, atom, cont->data); if (r) return r; break; case R600_ATOM_BLEND: - r = r600_blend_create(rdev, atoms, atom, cont->data); + r = r600_blend_create(rdev, atom, cont->data); if (r) return r; break; case R600_ATOM_CONSTANTS: - r = r600_constants_create(rdev, atoms, atom, cont->data); + r = r600_constants_create(rdev, atom, cont->data); if (r) return r; break; case R600_ATOM_DB: - r = r600_db_create(rdev, atoms, atom, cont->data); + r = r600_db_create(rdev, atom, cont->data); if (r) return r; break; case R600_ATOM_DB_CNTL: - r = r600_db_cntl_create(rdev, atoms, atom, cont->data); + r = r600_db_cntl_create(rdev, atom, cont->data); if (r) return r; break; case R600_ATOM_VS_SHADER: - r = r600_vs_shader_create(rdev, atoms, atom, cont->data); + r = r600_vs_shader_create(rdev, atom, cont->data); if (r) return r; break; case R600_ATOM_PS_SHADER: - r = r600_ps_shader_create(rdev, atoms, atom, cont->data); + r = r600_ps_shader_create(rdev, atom, cont->data); if (r) return r; break; @@ -516,6 +457,6 @@ int r600_atom_create(struct radeon_device *rdev, } patom->id = atom->id; *atomptr = atom; - mutex_unlock(&atoms->mutex); + mutex_unlock(&rdev->mutex); return 0; } diff --git a/radeon_atom.c b/radeon_atom.c index 3b9de9a..9904b33 100644 --- a/radeon_atom.c +++ b/radeon_atom.c @@ -98,19 +98,17 @@ int radeon_atom_create(struct radeon_device *rdev, struct drm_radeon_atom *patom, struct radeon_atom **atom) { - struct r600_atoms *atoms = &rdev->asic.r700.atoms; - - return r600_atom_create(rdev, atoms, patom, atom); + return r600_atom_create(rdev, patom, atom); } int radeon_batches_queue(struct radeon_device *rdev, void *batch) { - return r600_batches_queue(rdev, &rdev->asic.r700.atoms, batch); + return r600_batches_queue(rdev, batch); } int radeon_batches_flush(struct radeon_device *rdev) { - return r600_batches_flush(rdev, &rdev->asic.r700.atoms); + return r600_batches_flush(rdev); } struct radeon_bo *radeon_bo_lookup(struct radeon_device *rdev, u32 handle) diff --git a/radeon_device.c b/radeon_device.c index 90bd3c5..73eceda 100644 --- a/radeon_device.c +++ b/radeon_device.c @@ -146,7 +146,7 @@ int radeon_device_init(struct radeon_device **rdev, struct radeon *radeon) memset(dev, 0, sizeof(struct radeon_device)); dev->radeon = radeon; dev->fd = radeon->fd; - r = r600_atoms_init(dev, &dev->asic.r700.atoms); + r = r600_atoms_init(dev); if (r) return r; *rdev = dev; @@ -155,7 +155,7 @@ int radeon_device_init(struct radeon_device **rdev, struct radeon *radeon) void radeon_device_release(struct radeon_device *rdev) { - r600_atoms_release(rdev, &rdev->asic.r700.atoms); + r600_atoms_release(rdev); memset(rdev, 0, sizeof(struct radeon_device)); kfree(rdev); } diff --git a/radeon_device.h b/radeon_device.h index e84f69d..94f6495 100644 --- a/radeon_device.h +++ b/radeon_device.h @@ -25,24 +25,20 @@ struct radeon_device; struct radeon_ib; struct radeon_atom; -/* R700 */ -struct r700_asic { - struct r600_atoms atoms; -}; - -union radeon_asic { - struct r700_asic r700; -}; - /* Wrapper to make it looks like kernel *************************************/ #define radeon_bo_size(bo) ((bo)->size) struct radeon_device { struct radeon *radeon; int fd; - union radeon_asic asic; struct radeon_bo *bo[32]; u32 nbo; + struct idr idr; + struct mutex mutex; + struct r600_batches batches; + unsigned npipes; + unsigned nbanks; + unsigned group_bytes; }; struct radeon_ib { |