summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2010-02-17 23:21:37 +0100
committerJerome Glisse <jglisse@redhat.com>2010-02-17 23:21:37 +0100
commit8fb045b6022ab3fe9047554d763d26b9e3daa171 (patch)
tree68e20a605ce939d5f55d4878d571d4d4cc67f239
parentac3df020bed65faaa15038698d0445f64516f8f3 (diff)
more cleanup move most of the thing in radeon_device structure
-rw-r--r--r600_atom.c87
-rw-r--r--r600_atom.h30
-rw-r--r--r600_batch.c161
-rw-r--r--radeon_atom.c8
-rw-r--r--radeon_device.c4
-rw-r--r--radeon_device.h16
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 {