summaryrefslogtreecommitdiff
path: root/r600_atom.c
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2010-02-15 23:42:30 +0100
committerJerome Glisse <jglisse@redhat.com>2010-02-15 23:42:30 +0100
commit4b515b4227d384501df2d407c5db2dadcb09d984 (patch)
tree8be49f4ee37558844ef8382e5af61e8e6ec02249 /r600_atom.c
parentecb0945fb32d9531f9b5fdcfe07ba40c63e32c0f (diff)
remove vgt & tp
Diffstat (limited to 'r600_atom.c')
-rw-r--r--r600_atom.c211
1 files changed, 1 insertions, 210 deletions
diff --git a/r600_atom.c b/r600_atom.c
index d55cab0..571f479 100644
--- a/r600_atom.c
+++ b/r600_atom.c
@@ -424,60 +424,6 @@ out_err:
}
/*
- * r600_tp
- */
-struct r600_tp {
- struct radeon_atom atom;
- u32 pkts[4];
- struct r600_atoms *atoms;
-};
-
-static void r600_tp_release(struct kref *kref)
-{
- struct radeon_atom *atom = container_of(kref, struct radeon_atom, kref);
- struct r600_tp *tp = container_of(atom, struct r600_tp, atom);
-
- mutex_lock(&tp->atoms->mutex);
- list_del_init(&tp->atom.list);
- mutex_unlock(&tp->atoms->mutex);
- kfree(tp);
-}
-
-static int r600_tp_create(struct radeon_device *rdev,
- struct r600_atoms *atoms,
- struct drm_radeon_atom *patom,
- struct radeon_atom **atom)
-{
- struct drm_r600_tp ptp;
- struct r600_tp *tp;
- int r;
-
- tp = kmalloc(sizeof(*tp), GFP_KERNEL);
- if (tp == NULL)
- return -ENOMEM;
- /* make sure structure properly initialized */
- memset(tp, 0, sizeof(*tp));
- r = radeon_atom_init(&tp->atom, &atoms->idr, &r600_tp_release,
- &radeon_atom_emit_default, &r600_atom_process_default,
- tp->pkts);
- if (r)
- goto out_err;
- /* KERNEL use get user data */
- memcpy(&ptp, (void*)(unsigned long)patom->data, sizeof(struct drm_r600_tp));
- /* TA_CNTL_AUX */
- tp->pkts[tp->atom.npkts++] = PKT3(PKT3_SET_CONFIG_REG, 1);
- tp->pkts[tp->atom.npkts++] = 0x00000542;
- tp->pkts[tp->atom.npkts++] = ptp.ta_cntl_aux;
- *atom = &tp->atom;
-fprintf(stderr, "%s %d pkts\n", __func__, (*atom)->npkts);
- return 0;
-out_err:
- radeon_atom_put(&tp->atom);
- *atom = NULL;
- return r;
-}
-
-/*
* r600_pa
*/
struct r600_pa {
@@ -1109,135 +1055,6 @@ out_err:
}
/*
- * r600_vgt
- */
-struct r600_vgt {
- struct radeon_atom atom;
- u32 pkts[64];
- struct r600_atoms *atoms;
- int need_gs;
-};
-
-static void r600_vgt_release(struct kref *kref)
-{
- struct radeon_atom *atom = container_of(kref, struct radeon_atom, kref);
- struct r600_vgt *vgt = container_of(atom, struct r600_vgt, atom);
-
- mutex_lock(&vgt->atoms->mutex);
- list_del_init(&vgt->atom.list);
- mutex_unlock(&vgt->atoms->mutex);
- kfree(vgt);
-}
-
-static int r600_vgt_create(struct radeon_device *rdev,
- struct r600_atoms *atoms,
- struct drm_radeon_atom *patom,
- struct radeon_atom **atom)
-{
- struct drm_r600_vgt pvgt;
- struct r600_vgt *vgt;
- int r;
-
- vgt = kmalloc(sizeof(*vgt), GFP_KERNEL);
- if (vgt == NULL)
- return -ENOMEM;
- /* make sure structure properly initialized */
- memset(vgt, 0, sizeof(*vgt));
- r = radeon_atom_init(&vgt->atom, &atoms->idr, &r600_vgt_release,
- &radeon_atom_emit_default, &r600_atom_process_default,
- vgt->pkts);
- if (r)
- goto out_err;
- /* KERNEL use get user data */
- memcpy(&pvgt, (void*)(unsigned long)patom->data, sizeof(struct drm_r600_vgt));
- vgt->need_gs = 0;
- if (G_028A40_MODE(pvgt.vgt_gs_mode))
- vgt->need_gs = 1;
- /* VGT_VTX_VECT_EJECT_REG */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONFIG_REG, 1);
- vgt->pkts[vgt->atom.npkts++] = 0x0000022C;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_vtx_vect_eject_reg;
- /* VGT_GS_PER_ES */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONFIG_REG, 2);
- vgt->pkts[vgt->atom.npkts++] = 0x00000232;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_gs_per_es;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_es_per_gs;
- /* VGT_GS_VERTEX_REUSE */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONFIG_REG, 2);
- vgt->pkts[vgt->atom.npkts++] = 0x00000235;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_gs_vertex_reuse;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_mc_lat_cntl;
- /* VGT_GS_PER_VS */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONFIG_REG, 1);
- vgt->pkts[vgt->atom.npkts++] = 0x0000023A;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_gs_per_vs;
- /* VGT_PRIMITIVE_TYPE */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONFIG_REG, 1);
- vgt->pkts[vgt->atom.npkts++] = 0x00000256;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_primitive_type;
- /* VGT_NUM_INDICES */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONFIG_REG, 2);
- vgt->pkts[vgt->atom.npkts++] = 0x0000025C;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_num_indices;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_num_instances;
- /* VGT_MAX_VTX_INDX */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 2);
- vgt->pkts[vgt->atom.npkts++] = 0x00000100;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_max_vtx_indx;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_min_vtx_indx;
- /* VGT_MULTI_PRIM_IB_RESET_INDX */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 1);
- vgt->pkts[vgt->atom.npkts++] = 0x00000103;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_multi_prim_ib_reset_indx;
- /* VGT_OUTPUT_PATH_CNTL */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 1);
- vgt->pkts[vgt->atom.npkts++] = 0x00000284;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_output_path_cntl;
- /* VGT_GS_MODE */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 1);
- vgt->pkts[vgt->atom.npkts++] = 0x00000290;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_gs_mode;
- /* VGT_ENHANCE */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 1);
- vgt->pkts[vgt->atom.npkts++] = 0x00000294;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_enhance;
- /* VGT_GS_OUT_PRIM_TYPE */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 1);
- vgt->pkts[vgt->atom.npkts++] = 0x0000029B;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_gs_out_prim_type;
- /* VGT_PRIMITIVEID_EN */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 1);
- vgt->pkts[vgt->atom.npkts++] = 0x000002A1;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_primitiveid_en;
- /* VGT_MULTI_PRIM_IB_RESET_EN */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 1);
- vgt->pkts[vgt->atom.npkts++] = 0x000002A5;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_multi_prim_ib_reset_en;
- /* VGT_INSTANCE_STEP_RATE_0 */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 2);
- vgt->pkts[vgt->atom.npkts++] = 0x000002A8;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_instance_step_rate_0;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_instance_step_rate_1;
- /* VGT_REUSE_OFF */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 2);
- vgt->pkts[vgt->atom.npkts++] = 0x000002AD;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_reuse_off;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_vtx_cnt_en;
- /* VGT_VERTEX_REUSE_BLOCK_CNTL */
- vgt->pkts[vgt->atom.npkts++] = PKT3(PKT3_SET_CONTEXT_REG, 2);
- vgt->pkts[vgt->atom.npkts++] = 0x00000316;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_vertex_reuse_block_cntl;
- vgt->pkts[vgt->atom.npkts++] = pvgt.vgt_out_dealloc_cntl;
- *atom = &vgt->atom;
-fprintf(stderr, "%s %d pkts\n", __func__, (*atom)->npkts);
- return 0;
-out_err:
- radeon_atom_put(&vgt->atom);
- *atom = NULL;
- return r;
-}
-
-/*
* r600_vs_shader
*/
struct r600_vs_shader {
@@ -1529,13 +1346,6 @@ int r600_atom_create(struct radeon_device *rdev,
atom->type = patom->type;
list_add_tail(&atom->list, &atoms->pa_atoms);
break;
- case R600_ATOM_TP:
- r = r600_tp_create(rdev, atoms, patom, &atom);
- if (r)
- return r;
- atom->type = patom->type;
- list_add_tail(&atom->list, &atoms->tp_atoms);
- break;
case R600_ATOM_VPORT:
r = r600_vport_create(rdev, atoms, patom, &atom);
if (r)
@@ -1571,13 +1381,6 @@ int r600_atom_create(struct radeon_device *rdev,
atom->type = patom->type;
list_add_tail(&atom->list, &atoms->db_cntl_atoms);
break;
- case R600_ATOM_VGT:
- r = r600_vgt_create(rdev, atoms, patom, &atom);
- if (r)
- return r;
- atom->type = patom->type;
- list_add_tail(&atom->list, &atoms->vgt_atoms);
- break;
case R600_ATOM_VS_SHADER:
r = r600_vs_shader_create(rdev, atoms, patom, &atom);
if (r)
@@ -1731,7 +1534,6 @@ int r600_batches_queue(struct radeon_device *rdev,
struct r600_batch *rbatch;
struct r600_batches *batches = &atoms->batches;
struct r600_db_cntl *db_cntl;
- struct r600_vgt *vgt;
int r, i;
for (i = 0; i < batch->inputs.nbuffers; i++) {
@@ -1749,8 +1551,7 @@ int r600_batches_queue(struct radeon_device *rdev,
i = 0;
if (batch->blend == NULL || batch->cb_cntl == NULL ||
batch->pa == NULL || batch->vport == NULL ||
- batch->tp == NULL || batch->cb == NULL ||
- batch->db_cntl == NULL || batch->vgt == NULL ||
+ batch->cb == NULL || batch->db_cntl == NULL ||
batch->vs_shader == NULL || batch->ps_shader == NULL) {
mutex_unlock(&atoms->mutex);
kfree(rbatch);
@@ -1775,7 +1576,6 @@ int r600_batches_queue(struct radeon_device *rdev,
rbatch->atoms[i++] = batch->cb_cntl; kref_get(&batch->cb_cntl->kref);
rbatch->atoms[i++] = batch->pa; kref_get(&batch->pa->kref);
rbatch->atoms[i++] = batch->vport; kref_get(&batch->vport->kref);
- rbatch->atoms[i++] = batch->tp; kref_get(&batch->tp->kref);
rbatch->atoms[i++] = batch->vs_shader; kref_get(&batch->vs_shader->kref);
rbatch->atoms[i++] = batch->ps_shader; kref_get(&batch->ps_shader->kref);
rbatch->atoms[i++] = batch->db_cntl; kref_get(&batch->db_cntl->kref);
@@ -1788,7 +1588,6 @@ int r600_batches_queue(struct radeon_device *rdev,
rbatch->atoms[i++] = batch->db;
if (batch->db)
kref_get(&batch->db->kref);
- rbatch->atoms[i++] = batch->vgt; kref_get(&batch->vgt->kref);
rbatch->atoms[i++] = batch->cb; kref_get(&batch->cb->kref);
db_cntl = container_of(batch->db_cntl, struct r600_db_cntl, atom);
if (db_cntl->need_z || db_cntl->need_h || db_cntl->need_s) {
@@ -1810,12 +1609,6 @@ int r600_batches_queue(struct radeon_device *rdev,
goto out_err;
}
}
- vgt = container_of(batch->vgt, struct r600_vgt, atom);
- if (vgt->need_gs) {
- dev_err(rdev->dev, "we don't support GS shader\n");
- r = -EINVAL;
- goto out_err;
- }
reprocess:
radeon_atom_flush_cleanup(&rbatch->pre_flushes);
radeon_atom_flush_cleanup(&rbatch->post_flushes);
@@ -1929,8 +1722,6 @@ int r600_atoms_init(struct radeon_device *rdev, struct r600_atoms *atoms)
INIT_LIST_HEAD(&atoms->db_cntl_atoms);
INIT_LIST_HEAD(&atoms->pa_atoms);
INIT_LIST_HEAD(&atoms->sq_atoms);
- INIT_LIST_HEAD(&atoms->tp_atoms);
- INIT_LIST_HEAD(&atoms->vgt_atoms);
INIT_LIST_HEAD(&atoms->vport_atoms);
INIT_LIST_HEAD(&atoms->vs_shader_atoms);
INIT_LIST_HEAD(&atoms->ps_shader_atoms);