diff options
author | Jerome Glisse <jglisse@redhat.com> | 2010-02-15 23:42:30 +0100 |
---|---|---|
committer | Jerome Glisse <jglisse@redhat.com> | 2010-02-15 23:42:30 +0100 |
commit | 4b515b4227d384501df2d407c5db2dadcb09d984 (patch) | |
tree | 8be49f4ee37558844ef8382e5af61e8e6ec02249 /r600_atom.c | |
parent | ecb0945fb32d9531f9b5fdcfe07ba40c63e32c0f (diff) |
remove vgt & tp
Diffstat (limited to 'r600_atom.c')
-rw-r--r-- | r600_atom.c | 211 |
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); |