1ad43ddacSmrg 2ad43ddacSmrg#ifndef RADEON_VBO_H 3ad43ddacSmrg#define RADEON_VBO_H 4ad43ddacSmrg 5921a55d8Smrgextern void radeon_vb_no_space(ScrnInfoPtr pScrn, struct radeon_vbo_object *vbo, int vert_size); 6ad43ddacSmrgextern void radeon_vbo_init_lists(ScrnInfoPtr pScrn); 7ad43ddacSmrgextern void radeon_vbo_free_lists(ScrnInfoPtr pScrn); 8ad43ddacSmrgextern void radeon_vbo_flush_bos(ScrnInfoPtr pScrn); 9921a55d8Smrgextern void radeon_vbo_get(ScrnInfoPtr pScrn, struct radeon_vbo_object *vbo); 10921a55d8Smrgextern void radeon_vbo_put(ScrnInfoPtr pScrn, struct radeon_vbo_object *vbo); 11ad43ddacSmrg 12921a55d8Smrgstatic inline void radeon_vbo_check(ScrnInfoPtr pScrn, 13921a55d8Smrg struct radeon_vbo_object *vbo, 14921a55d8Smrg int vert_size) 15ad43ddacSmrg{ 16ad43ddacSmrg 17921a55d8Smrg if ((vbo->vb_offset + (vbo->verts_per_op * vert_size)) > vbo->vb_total) { 18921a55d8Smrg radeon_vb_no_space(pScrn, vbo, vert_size); 19ad43ddacSmrg } 20ad43ddacSmrg} 21ad43ddacSmrg 22ad43ddacSmrgstatic inline void * 23921a55d8Smrgradeon_vbo_space(ScrnInfoPtr pScrn, 24921a55d8Smrg struct radeon_vbo_object *vbo, 25921a55d8Smrg int vert_size) 26ad43ddacSmrg{ 2743df4709Smrg#if defined(XF86DRM_MODE) 2843df4709Smrg RADEONInfoPtr info = RADEONPTR(pScrn); 2943df4709Smrg#endif 30ad43ddacSmrg void *vb; 31921a55d8Smrg 32ad43ddacSmrg /* we've ran out of space in the vertex buffer - need to get a 33ad43ddacSmrg new one */ 34921a55d8Smrg radeon_vbo_check(pScrn, vbo, vert_size); 350974d292Smrg 36921a55d8Smrg vbo->vb_op_vert_size = vert_size; 3743df4709Smrg#if defined(XF86DRM_MODE) 3843df4709Smrg if (info->cs) 3943df4709Smrg vb = (pointer)((char *)vbo->vb_bo->ptr + vbo->vb_offset); 4043df4709Smrg else 4143df4709Smrg#endif 4243df4709Smrg vb = (pointer)((char *)vbo->vb_ptr + vbo->vb_offset); 43ad43ddacSmrg return vb; 44ad43ddacSmrg} 45ad43ddacSmrg 46921a55d8Smrgstatic inline void radeon_vbo_commit(ScrnInfoPtr pScrn, 47921a55d8Smrg struct radeon_vbo_object *vbo) 48ad43ddacSmrg{ 49ad43ddacSmrg 50921a55d8Smrg vbo->vb_offset += vbo->verts_per_op * vbo->vb_op_vert_size; 51ad43ddacSmrg} 52ad43ddacSmrg 53ad43ddacSmrg#endif 54