Lines Matching refs:track

1307 	struct r100_cs_track *track;
1313 track = (struct r100_cs_track *)p->track;
1321 track->num_arrays = c;
1333 track->arrays[i + 0].esize = idx_value >> 8;
1334 track->arrays[i + 0].robj = reloc->robj;
1335 track->arrays[i + 0].esize &= 0x7F;
1344 track->arrays[i + 1].robj = reloc->robj;
1345 track->arrays[i + 1].esize = idx_value >> 24;
1346 track->arrays[i + 1].esize &= 0x7F;
1358 track->arrays[i + 0].robj = reloc->robj;
1359 track->arrays[i + 0].esize = idx_value >> 8;
1360 track->arrays[i + 0].esize &= 0x7F;
1556 struct r100_cs_track *track;
1565 track = (struct r100_cs_track *)p->track;
1595 track->zb.robj = reloc->robj;
1596 track->zb.offset = idx_value;
1597 track->zb_dirty = true;
1608 track->cb[0].robj = reloc->robj;
1609 track->cb[0].offset = idx_value;
1610 track->cb_dirty = true;
1635 track->textures[i].robj = reloc->robj;
1636 track->tex_dirty = true;
1651 track->textures[0].cube_info[i].offset = idx_value;
1653 track->textures[0].cube_info[i].robj = reloc->robj;
1654 track->tex_dirty = true;
1669 track->textures[1].cube_info[i].offset = idx_value;
1671 track->textures[1].cube_info[i].robj = reloc->robj;
1672 track->tex_dirty = true;
1687 track->textures[2].cube_info[i].offset = idx_value;
1689 track->textures[2].cube_info[i].robj = reloc->robj;
1690 track->tex_dirty = true;
1693 track->maxy = ((idx_value >> 16) & 0x7FF);
1694 track->cb_dirty = true;
1695 track->zb_dirty = true;
1717 track->cb[0].pitch = idx_value & RADEON_COLORPITCH_MASK;
1718 track->cb_dirty = true;
1721 track->zb.pitch = idx_value & RADEON_DEPTHPITCH_MASK;
1722 track->zb_dirty = true;
1731 track->cb[0].cpp = 1;
1736 track->cb[0].cpp = 2;
1739 track->cb[0].cpp = 4;
1746 track->z_enabled = !!(idx_value & RADEON_Z_ENABLE);
1747 track->cb_dirty = true;
1748 track->zb_dirty = true;
1753 track->zb.cpp = 2;
1761 track->zb.cpp = 4;
1766 track->zb_dirty = true;
1781 for (i = 0; i < track->num_texture; i++)
1782 track->textures[i].enabled = !!(temp & (1 << i));
1783 track->tex_dirty = true;
1787 track->vap_vf_cntl = idx_value;
1790 track->vtx_size = r100_get_vtx_size(idx_value);
1796 track->textures[i].width = (idx_value & RADEON_TEX_USIZE_MASK) + 1;
1797 track->textures[i].height = ((idx_value & RADEON_TEX_VSIZE_MASK) >> RADEON_TEX_VSIZE_SHIFT) + 1;
1798 track->tex_dirty = true;
1804 track->textures[i].pitch = idx_value + 32;
1805 track->tex_dirty = true;
1811 track->textures[i].num_levels = ((idx_value & RADEON_MAX_MIP_LEVEL_MASK)
1815 track->textures[i].roundup_w = false;
1818 track->textures[i].roundup_h = false;
1819 track->tex_dirty = true;
1826 track->textures[i].use_pitch = true;
1828 track->textures[i].use_pitch = false;
1829 track->textures[i].width = 1 << ((idx_value & RADEON_TXFORMAT_WIDTH_MASK) >> RADEON_TXFORMAT_WIDTH_SHIFT);
1830 track->textures[i].height = 1 << ((idx_value & RADEON_TXFORMAT_HEIGHT_MASK) >> RADEON_TXFORMAT_HEIGHT_SHIFT);
1833 track->textures[i].tex_coord_type = 2;
1838 track->textures[i].cpp = 1;
1839 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
1850 track->textures[i].cpp = 2;
1851 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
1857 track->textures[i].cpp = 4;
1858 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
1861 track->textures[i].cpp = 1;
1862 track->textures[i].compress_format = R100_TRACK_COMP_DXT1;
1866 track->textures[i].cpp = 1;
1867 track->textures[i].compress_format = R100_TRACK_COMP_DXT35;
1870 track->textures[i].cube_info[4].width = 1 << ((idx_value >> 16) & 0xf);
1871 track->textures[i].cube_info[4].height = 1 << ((idx_value >> 20) & 0xf);
1872 track->tex_dirty = true;
1880 track->textures[i].cube_info[face].width = 1 << ((tmp >> (face * 8)) & 0xf);
1881 track->textures[i].cube_info[face].height = 1 << ((tmp >> ((face * 8) + 4)) & 0xf);
1883 track->tex_dirty = true;
1914 struct r100_cs_track *track;
1921 track = (struct r100_cs_track *)p->track;
1950 track->num_arrays = 1;
1951 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 2));
1953 track->arrays[0].robj = reloc->robj;
1954 track->arrays[0].esize = track->vtx_size;
1956 track->max_indx = radeon_get_ib_value(p, idx+1);
1958 track->vap_vf_cntl = radeon_get_ib_value(p, idx+3);
1959 track->immd_dwords = pkt->count - 1;
1960 r = r100_cs_track_check(p->rdev, track);
1969 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 0));
1970 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1);
1971 track->immd_dwords = pkt->count - 1;
1972 r = r100_cs_track_check(p->rdev, track);
1982 track->vap_vf_cntl = radeon_get_ib_value(p, idx);
1983 track->immd_dwords = pkt->count;
1984 r = r100_cs_track_check(p->rdev, track);
1990 track->vap_vf_cntl = radeon_get_ib_value(p, idx);
1991 r = r100_cs_track_check(p->rdev, track);
1997 track->vap_vf_cntl = radeon_get_ib_value(p, idx);
1998 r = r100_cs_track_check(p->rdev, track);
2004 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1);
2005 r = r100_cs_track_check(p->rdev, track);
2011 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1);
2012 r = r100_cs_track_check(p->rdev, track);
2034 struct r100_cs_track *track;
2037 track = kzalloc(sizeof(*track), GFP_KERNEL);
2038 if (!track)
2040 r100_cs_track_clear(p->rdev, track);
2041 p->track = track;
2125 struct r100_cs_track *track, unsigned idx)
2130 unsigned compress_format = track->textures[idx].compress_format;
2133 cube_robj = track->textures[idx].cube_info[face].robj;
2134 w = track->textures[idx].cube_info[face].width;
2135 h = track->textures[idx].cube_info[face].height;
2141 size *= track->textures[idx].cpp;
2143 size += track->textures[idx].cube_info[face].offset;
2148 r100_cs_track_texture_print(&track->textures[idx]);
2156 struct r100_cs_track *track)
2163 for (u = 0; u < track->num_texture; u++) {
2164 if (!track->textures[u].enabled)
2166 if (track->textures[u].lookup_disable)
2168 robj = track->textures[u].robj;
2174 for (i = 0; i <= track->textures[u].num_levels; i++) {
2175 if (track->textures[u].use_pitch) {
2177 w = (track->textures[u].pitch / track->textures[u].cpp) / (1 << i);
2179 w = track->textures[u].pitch / (1 << i);
2181 w = track->textures[u].width;
2183 w |= track->textures[u].width_11;
2185 if (track->textures[u].roundup_w)
2188 h = track->textures[u].height;
2190 h |= track->textures[u].height_11;
2192 if (track->textures[u].roundup_h)
2194 if (track->textures[u].tex_coord_type == 1) {
2195 d = (1 << track->textures[u].txdepth) / (1 << i);
2201 if (track->textures[u].compress_format) {
2203 size += r100_track_compress_size(track->textures[u].compress_format, w, h) * d;
2208 size *= track->textures[u].cpp;
2210 switch (track->textures[u].tex_coord_type) {
2215 if (track->separate_cube) {
2216 ret = r100_cs_track_cube(rdev, track, u);
2224 "%u\n", track->textures[u].tex_coord_type, u);
2230 r100_cs_track_texture_print(&track->textures[u]);
2237 int r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track)
2243 unsigned num_cb = track->cb_dirty ? track->num_cb : 0;
2245 if (num_cb && !track->zb_cb_clear && !track->color_channel_mask &&
2246 !track->blend_read_enable)
2250 if (track->cb[i].robj == NULL) {
2254 size = track->cb[i].pitch * track->cb[i].cpp * track->maxy;
2255 size += track->cb[i].offset;
2256 if (size > radeon_bo_size(track->cb[i].robj)) {
2259 radeon_bo_size(track->cb[i].robj));
2261 i, track->cb[i].pitch, track->cb[i].cpp,
2262 track->cb[i].offset, track->maxy);
2266 track->cb_dirty = false;
2268 if (track->zb_dirty && track->z_enabled) {
2269 if (track->zb.robj == NULL) {
2273 size = track->zb.pitch * track->zb.cpp * track->maxy;
2274 size += track->zb.offset;
2275 if (size > radeon_bo_size(track->zb.robj)) {
2278 radeon_bo_size(track->zb.robj));
2280 track->zb.pitch, track->zb.cpp,
2281 track->zb.offset, track->maxy);
2285 track->zb_dirty = false;
2287 if (track->aa_dirty && track->aaresolve) {
2288 if (track->aa.robj == NULL) {
2293 size = track->aa.pitch * track->cb[0].cpp * track->maxy;
2294 size += track->aa.offset;
2295 if (size > radeon_bo_size(track->aa.robj)) {
2298 radeon_bo_size(track->aa.robj));
2300 i, track->aa.pitch, track->cb[0].cpp,
2301 track->aa.offset, track->maxy);
2305 track->aa_dirty = false;
2307 prim_walk = (track->vap_vf_cntl >> 4) & 0x3;
2308 if (track->vap_vf_cntl & (1 << 14)) {
2309 nverts = track->vap_alt_nverts;
2311 nverts = (track->vap_vf_cntl >> 16) & 0xFFFF;
2315 for (i = 0; i < track->num_arrays; i++) {
2316 size = track->arrays[i].esize * track->max_indx * 4UL;
2317 if (track->arrays[i].robj == NULL) {
2322 if (size > radeon_bo_size(track->arrays[i].robj)) {
2326 radeon_bo_size(track->arrays[i].robj)
2328 DRM_ERROR("Max indices %u\n", track->max_indx);
2334 for (i = 0; i < track->num_arrays; i++) {
2335 size = track->arrays[i].esize * (nverts - 1) * 4UL;
2336 if (track->arrays[i].robj == NULL) {
2341 if (size > radeon_bo_size(track->arrays[i].robj)) {
2345 radeon_bo_size(track->arrays[i].robj)
2352 size = track->vtx_size * nverts;
2353 if (size != track->immd_dwords) {
2355 track->immd_dwords, size);
2357 nverts, track->vtx_size);
2367 if (track->tex_dirty) {
2368 track->tex_dirty = false;
2369 return r100_cs_track_texture_check(rdev, track);
2374 void r100_cs_track_clear(struct radeon_device *rdev, struct r100_cs_track *track)
2378 track->cb_dirty = true;
2379 track->zb_dirty = true;
2380 track->tex_dirty = true;
2381 track->aa_dirty = true;
2384 track->num_cb = 1;
2386 track->num_texture = 3;
2388 track->num_texture = 6;
2389 track->maxy = 2048;
2390 track->separate_cube = true;
2392 track->num_cb = 4;
2393 track->num_texture = 16;
2394 track->maxy = 4096;
2395 track->separate_cube = false;
2396 track->aaresolve = false;
2397 track->aa.robj = NULL;
2400 for (i = 0; i < track->num_cb; i++) {
2401 track->cb[i].robj = NULL;
2402 track->cb[i].pitch = 8192;
2403 track->cb[i].cpp = 16;
2404 track->cb[i].offset = 0;
2406 track->z_enabled = true;
2407 track->zb.robj = NULL;
2408 track->zb.pitch = 8192;
2409 track->zb.cpp = 4;
2410 track->zb.offset = 0;
2411 track->vtx_size = 0x7F;
2412 track->immd_dwords = 0xFFFFFFFFUL;
2413 track->num_arrays = 11;
2414 track->max_indx = 0x00FFFFFFUL;
2415 for (i = 0; i < track->num_arrays; i++) {
2416 track->arrays[i].robj = NULL;
2417 track->arrays[i].esize = 0x7F;
2419 for (i = 0; i < track->num_texture; i++) {
2420 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
2421 track->textures[i].pitch = 16536;
2422 track->textures[i].width = 16536;
2423 track->textures[i].height = 16536;
2424 track->textures[i].width_11 = 1 << 11;
2425 track->textures[i].height_11 = 1 << 11;
2426 track->textures[i].num_levels = 12;
2428 track->textures[i].tex_coord_type = 0;
2429 track->textures[i].txdepth = 0;
2431 track->textures[i].txdepth = 16;
2432 track->textures[i].tex_coord_type = 1;
2434 track->textures[i].cpp = 64;
2435 track->textures[i].robj = NULL;
2437 track->textures[i].enabled = false;
2438 track->textures[i].lookup_disable = false;
2439 track->textures[i].roundup_w = true;
2440 track->textures[i].roundup_h = true;
2441 if (track->separate_cube)
2443 track->textures[i].cube_info[face].robj = NULL;
2444 track->textures[i].cube_info[face].width = 16536;
2445 track->textures[i].cube_info[face].height = 16536;
2446 track->textures[i].cube_info[face].offset = 0;