Lines Matching refs:track

1335 	struct r100_cs_track *track;  in r100_packet3_load_vbpntr()  local
1341 track = (struct r100_cs_track *)p->track; in r100_packet3_load_vbpntr()
1349 track->num_arrays = c; in r100_packet3_load_vbpntr()
1361 track->arrays[i + 0].esize = idx_value >> 8; in r100_packet3_load_vbpntr()
1362 track->arrays[i + 0].robj = reloc->robj; in r100_packet3_load_vbpntr()
1363 track->arrays[i + 0].esize &= 0x7F; in r100_packet3_load_vbpntr()
1372 track->arrays[i + 1].robj = reloc->robj; in r100_packet3_load_vbpntr()
1373 track->arrays[i + 1].esize = idx_value >> 24; in r100_packet3_load_vbpntr()
1374 track->arrays[i + 1].esize &= 0x7F; in r100_packet3_load_vbpntr()
1386 track->arrays[i + 0].robj = reloc->robj; in r100_packet3_load_vbpntr()
1387 track->arrays[i + 0].esize = idx_value >> 8; in r100_packet3_load_vbpntr()
1388 track->arrays[i + 0].esize &= 0x7F; in r100_packet3_load_vbpntr()
1584 struct r100_cs_track *track; in r100_packet0_check() local
1593 track = (struct r100_cs_track *)p->track; in r100_packet0_check()
1623 track->zb.robj = reloc->robj; in r100_packet0_check()
1624 track->zb.offset = idx_value; in r100_packet0_check()
1625 track->zb_dirty = true; in r100_packet0_check()
1636 track->cb[0].robj = reloc->robj; in r100_packet0_check()
1637 track->cb[0].offset = idx_value; in r100_packet0_check()
1638 track->cb_dirty = true; in r100_packet0_check()
1663 track->textures[i].robj = reloc->robj; in r100_packet0_check()
1664 track->tex_dirty = true; in r100_packet0_check()
1679 track->textures[0].cube_info[i].offset = idx_value; in r100_packet0_check()
1681 track->textures[0].cube_info[i].robj = reloc->robj; in r100_packet0_check()
1682 track->tex_dirty = true; in r100_packet0_check()
1697 track->textures[1].cube_info[i].offset = idx_value; in r100_packet0_check()
1699 track->textures[1].cube_info[i].robj = reloc->robj; in r100_packet0_check()
1700 track->tex_dirty = true; in r100_packet0_check()
1715 track->textures[2].cube_info[i].offset = idx_value; in r100_packet0_check()
1717 track->textures[2].cube_info[i].robj = reloc->robj; in r100_packet0_check()
1718 track->tex_dirty = true; in r100_packet0_check()
1721 track->maxy = ((idx_value >> 16) & 0x7FF); in r100_packet0_check()
1722 track->cb_dirty = true; in r100_packet0_check()
1723 track->zb_dirty = true; in r100_packet0_check()
1745 track->cb[0].pitch = idx_value & RADEON_COLORPITCH_MASK; in r100_packet0_check()
1746 track->cb_dirty = true; in r100_packet0_check()
1749 track->zb.pitch = idx_value & RADEON_DEPTHPITCH_MASK; in r100_packet0_check()
1750 track->zb_dirty = true; in r100_packet0_check()
1759 track->cb[0].cpp = 1; in r100_packet0_check()
1764 track->cb[0].cpp = 2; in r100_packet0_check()
1767 track->cb[0].cpp = 4; in r100_packet0_check()
1774 track->z_enabled = !!(idx_value & RADEON_Z_ENABLE); in r100_packet0_check()
1775 track->cb_dirty = true; in r100_packet0_check()
1776 track->zb_dirty = true; in r100_packet0_check()
1781 track->zb.cpp = 2; in r100_packet0_check()
1789 track->zb.cpp = 4; in r100_packet0_check()
1794 track->zb_dirty = true; in r100_packet0_check()
1809 for (i = 0; i < track->num_texture; i++) in r100_packet0_check()
1810 track->textures[i].enabled = !!(temp & (1 << i)); in r100_packet0_check()
1811 track->tex_dirty = true; in r100_packet0_check()
1815 track->vap_vf_cntl = idx_value; in r100_packet0_check()
1818 track->vtx_size = r100_get_vtx_size(idx_value); in r100_packet0_check()
1824 track->textures[i].width = (idx_value & RADEON_TEX_USIZE_MASK) + 1; in r100_packet0_check()
1825 track->textures[i].height = ((idx_value & RADEON_TEX_VSIZE_MASK) >> RADEON_TEX_VSIZE_SHIFT) + 1; in r100_packet0_check()
1826 track->tex_dirty = true; in r100_packet0_check()
1832 track->textures[i].pitch = idx_value + 32; in r100_packet0_check()
1833 track->tex_dirty = true; in r100_packet0_check()
1839 track->textures[i].num_levels = ((idx_value & RADEON_MAX_MIP_LEVEL_MASK) in r100_packet0_check()
1843 track->textures[i].roundup_w = false; in r100_packet0_check()
1846 track->textures[i].roundup_h = false; in r100_packet0_check()
1847 track->tex_dirty = true; in r100_packet0_check()
1854 track->textures[i].use_pitch = true; in r100_packet0_check()
1856 track->textures[i].use_pitch = false; in r100_packet0_check()
1857track->textures[i].width = 1 << ((idx_value & RADEON_TXFORMAT_WIDTH_MASK) >> RADEON_TXFORMAT_WIDTH… in r100_packet0_check()
1858track->textures[i].height = 1 << ((idx_value & RADEON_TXFORMAT_HEIGHT_MASK) >> RADEON_TXFORMAT_HEI… in r100_packet0_check()
1861 track->textures[i].tex_coord_type = 2; in r100_packet0_check()
1866 track->textures[i].cpp = 1; in r100_packet0_check()
1867 track->textures[i].compress_format = R100_TRACK_COMP_NONE; in r100_packet0_check()
1878 track->textures[i].cpp = 2; in r100_packet0_check()
1879 track->textures[i].compress_format = R100_TRACK_COMP_NONE; in r100_packet0_check()
1885 track->textures[i].cpp = 4; in r100_packet0_check()
1886 track->textures[i].compress_format = R100_TRACK_COMP_NONE; in r100_packet0_check()
1889 track->textures[i].cpp = 1; in r100_packet0_check()
1890 track->textures[i].compress_format = R100_TRACK_COMP_DXT1; in r100_packet0_check()
1894 track->textures[i].cpp = 1; in r100_packet0_check()
1895 track->textures[i].compress_format = R100_TRACK_COMP_DXT35; in r100_packet0_check()
1898 track->textures[i].cube_info[4].width = 1 << ((idx_value >> 16) & 0xf); in r100_packet0_check()
1899 track->textures[i].cube_info[4].height = 1 << ((idx_value >> 20) & 0xf); in r100_packet0_check()
1900 track->tex_dirty = true; in r100_packet0_check()
1908 track->textures[i].cube_info[face].width = 1 << ((tmp >> (face * 8)) & 0xf); in r100_packet0_check()
1909 track->textures[i].cube_info[face].height = 1 << ((tmp >> ((face * 8) + 4)) & 0xf); in r100_packet0_check()
1911 track->tex_dirty = true; in r100_packet0_check()
1942 struct r100_cs_track *track; in r100_packet3_check() local
1949 track = (struct r100_cs_track *)p->track; in r100_packet3_check()
1978 track->num_arrays = 1; in r100_packet3_check()
1979 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 2)); in r100_packet3_check()
1981 track->arrays[0].robj = reloc->robj; in r100_packet3_check()
1982 track->arrays[0].esize = track->vtx_size; in r100_packet3_check()
1984 track->max_indx = radeon_get_ib_value(p, idx+1); in r100_packet3_check()
1986 track->vap_vf_cntl = radeon_get_ib_value(p, idx+3); in r100_packet3_check()
1987 track->immd_dwords = pkt->count - 1; in r100_packet3_check()
1988 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
1997 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 0)); in r100_packet3_check()
1998 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1); in r100_packet3_check()
1999 track->immd_dwords = pkt->count - 1; in r100_packet3_check()
2000 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
2010 track->vap_vf_cntl = radeon_get_ib_value(p, idx); in r100_packet3_check()
2011 track->immd_dwords = pkt->count; in r100_packet3_check()
2012 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
2018 track->vap_vf_cntl = radeon_get_ib_value(p, idx); in r100_packet3_check()
2019 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
2025 track->vap_vf_cntl = radeon_get_ib_value(p, idx); in r100_packet3_check()
2026 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
2032 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1); in r100_packet3_check()
2033 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
2039 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1); in r100_packet3_check()
2040 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
2062 struct r100_cs_track *track; in r100_cs_parse() local
2065 track = kzalloc(sizeof(*track), GFP_KERNEL); in r100_cs_parse()
2066 if (!track) in r100_cs_parse()
2068 r100_cs_track_clear(p->rdev, track); in r100_cs_parse()
2069 p->track = track; in r100_cs_parse()
2153 struct r100_cs_track *track, unsigned idx) in r100_cs_track_cube() argument
2158 unsigned compress_format = track->textures[idx].compress_format; in r100_cs_track_cube()
2161 cube_robj = track->textures[idx].cube_info[face].robj; in r100_cs_track_cube()
2162 w = track->textures[idx].cube_info[face].width; in r100_cs_track_cube()
2163 h = track->textures[idx].cube_info[face].height; in r100_cs_track_cube()
2169 size *= track->textures[idx].cpp; in r100_cs_track_cube()
2171 size += track->textures[idx].cube_info[face].offset; in r100_cs_track_cube()
2176 r100_cs_track_texture_print(&track->textures[idx]); in r100_cs_track_cube()
2184 struct r100_cs_track *track) in r100_cs_track_texture_check() argument
2191 for (u = 0; u < track->num_texture; u++) { in r100_cs_track_texture_check()
2192 if (!track->textures[u].enabled) in r100_cs_track_texture_check()
2194 if (track->textures[u].lookup_disable) in r100_cs_track_texture_check()
2196 robj = track->textures[u].robj; in r100_cs_track_texture_check()
2202 for (i = 0; i <= track->textures[u].num_levels; i++) { in r100_cs_track_texture_check()
2203 if (track->textures[u].use_pitch) { in r100_cs_track_texture_check()
2205 w = (track->textures[u].pitch / track->textures[u].cpp) / (1 << i); in r100_cs_track_texture_check()
2207 w = track->textures[u].pitch / (1 << i); in r100_cs_track_texture_check()
2209 w = track->textures[u].width; in r100_cs_track_texture_check()
2211 w |= track->textures[u].width_11; in r100_cs_track_texture_check()
2213 if (track->textures[u].roundup_w) in r100_cs_track_texture_check()
2216 h = track->textures[u].height; in r100_cs_track_texture_check()
2218 h |= track->textures[u].height_11; in r100_cs_track_texture_check()
2220 if (track->textures[u].roundup_h) in r100_cs_track_texture_check()
2222 if (track->textures[u].tex_coord_type == 1) { in r100_cs_track_texture_check()
2223 d = (1 << track->textures[u].txdepth) / (1 << i); in r100_cs_track_texture_check()
2229 if (track->textures[u].compress_format) { in r100_cs_track_texture_check()
2231 size += r100_track_compress_size(track->textures[u].compress_format, w, h) * d; in r100_cs_track_texture_check()
2236 size *= track->textures[u].cpp; in r100_cs_track_texture_check()
2238 switch (track->textures[u].tex_coord_type) { in r100_cs_track_texture_check()
2243 if (track->separate_cube) { in r100_cs_track_texture_check()
2244 ret = r100_cs_track_cube(rdev, track, u); in r100_cs_track_texture_check()
2252 "%u\n", track->textures[u].tex_coord_type, u); in r100_cs_track_texture_check()
2258 r100_cs_track_texture_print(&track->textures[u]); in r100_cs_track_texture_check()
2265 int r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track) in r100_cs_track_check() argument
2271 unsigned num_cb = track->cb_dirty ? track->num_cb : 0; in r100_cs_track_check()
2273 if (num_cb && !track->zb_cb_clear && !track->color_channel_mask && in r100_cs_track_check()
2274 !track->blend_read_enable) in r100_cs_track_check()
2278 if (track->cb[i].robj == NULL) { in r100_cs_track_check()
2282 size = track->cb[i].pitch * track->cb[i].cpp * track->maxy; in r100_cs_track_check()
2283 size += track->cb[i].offset; in r100_cs_track_check()
2284 if (size > radeon_bo_size(track->cb[i].robj)) { in r100_cs_track_check()
2287 radeon_bo_size(track->cb[i].robj)); in r100_cs_track_check()
2289 i, track->cb[i].pitch, track->cb[i].cpp, in r100_cs_track_check()
2290 track->cb[i].offset, track->maxy); in r100_cs_track_check()
2294 track->cb_dirty = false; in r100_cs_track_check()
2296 if (track->zb_dirty && track->z_enabled) { in r100_cs_track_check()
2297 if (track->zb.robj == NULL) { in r100_cs_track_check()
2301 size = track->zb.pitch * track->zb.cpp * track->maxy; in r100_cs_track_check()
2302 size += track->zb.offset; in r100_cs_track_check()
2303 if (size > radeon_bo_size(track->zb.robj)) { in r100_cs_track_check()
2306 radeon_bo_size(track->zb.robj)); in r100_cs_track_check()
2308 track->zb.pitch, track->zb.cpp, in r100_cs_track_check()
2309 track->zb.offset, track->maxy); in r100_cs_track_check()
2313 track->zb_dirty = false; in r100_cs_track_check()
2315 if (track->aa_dirty && track->aaresolve) { in r100_cs_track_check()
2316 if (track->aa.robj == NULL) { in r100_cs_track_check()
2321 size = track->aa.pitch * track->cb[0].cpp * track->maxy; in r100_cs_track_check()
2322 size += track->aa.offset; in r100_cs_track_check()
2323 if (size > radeon_bo_size(track->aa.robj)) { in r100_cs_track_check()
2326 radeon_bo_size(track->aa.robj)); in r100_cs_track_check()
2328 i, track->aa.pitch, track->cb[0].cpp, in r100_cs_track_check()
2329 track->aa.offset, track->maxy); in r100_cs_track_check()
2333 track->aa_dirty = false; in r100_cs_track_check()
2335 prim_walk = (track->vap_vf_cntl >> 4) & 0x3; in r100_cs_track_check()
2336 if (track->vap_vf_cntl & (1 << 14)) { in r100_cs_track_check()
2337 nverts = track->vap_alt_nverts; in r100_cs_track_check()
2339 nverts = (track->vap_vf_cntl >> 16) & 0xFFFF; in r100_cs_track_check()
2343 for (i = 0; i < track->num_arrays; i++) { in r100_cs_track_check()
2344 size = track->arrays[i].esize * track->max_indx * 4UL; in r100_cs_track_check()
2345 if (track->arrays[i].robj == NULL) { in r100_cs_track_check()
2350 if (size > radeon_bo_size(track->arrays[i].robj)) { in r100_cs_track_check()
2354 radeon_bo_size(track->arrays[i].robj) in r100_cs_track_check()
2356 DRM_ERROR("Max indices %u\n", track->max_indx); in r100_cs_track_check()
2362 for (i = 0; i < track->num_arrays; i++) { in r100_cs_track_check()
2363 size = track->arrays[i].esize * (nverts - 1) * 4UL; in r100_cs_track_check()
2364 if (track->arrays[i].robj == NULL) { in r100_cs_track_check()
2369 if (size > radeon_bo_size(track->arrays[i].robj)) { in r100_cs_track_check()
2373 radeon_bo_size(track->arrays[i].robj) in r100_cs_track_check()
2380 size = track->vtx_size * nverts; in r100_cs_track_check()
2381 if (size != track->immd_dwords) { in r100_cs_track_check()
2383 track->immd_dwords, size); in r100_cs_track_check()
2385 nverts, track->vtx_size); in r100_cs_track_check()
2395 if (track->tex_dirty) { in r100_cs_track_check()
2396 track->tex_dirty = false; in r100_cs_track_check()
2397 return r100_cs_track_texture_check(rdev, track); in r100_cs_track_check()
2402 void r100_cs_track_clear(struct radeon_device *rdev, struct r100_cs_track *track) in r100_cs_track_clear() argument
2406 track->cb_dirty = true; in r100_cs_track_clear()
2407 track->zb_dirty = true; in r100_cs_track_clear()
2408 track->tex_dirty = true; in r100_cs_track_clear()
2409 track->aa_dirty = true; in r100_cs_track_clear()
2412 track->num_cb = 1; in r100_cs_track_clear()
2414 track->num_texture = 3; in r100_cs_track_clear()
2416 track->num_texture = 6; in r100_cs_track_clear()
2417 track->maxy = 2048; in r100_cs_track_clear()
2418 track->separate_cube = true; in r100_cs_track_clear()
2420 track->num_cb = 4; in r100_cs_track_clear()
2421 track->num_texture = 16; in r100_cs_track_clear()
2422 track->maxy = 4096; in r100_cs_track_clear()
2423 track->separate_cube = false; in r100_cs_track_clear()
2424 track->aaresolve = false; in r100_cs_track_clear()
2425 track->aa.robj = NULL; in r100_cs_track_clear()
2428 for (i = 0; i < track->num_cb; i++) { in r100_cs_track_clear()
2429 track->cb[i].robj = NULL; in r100_cs_track_clear()
2430 track->cb[i].pitch = 8192; in r100_cs_track_clear()
2431 track->cb[i].cpp = 16; in r100_cs_track_clear()
2432 track->cb[i].offset = 0; in r100_cs_track_clear()
2434 track->z_enabled = true; in r100_cs_track_clear()
2435 track->zb.robj = NULL; in r100_cs_track_clear()
2436 track->zb.pitch = 8192; in r100_cs_track_clear()
2437 track->zb.cpp = 4; in r100_cs_track_clear()
2438 track->zb.offset = 0; in r100_cs_track_clear()
2439 track->vtx_size = 0x7F; in r100_cs_track_clear()
2440 track->immd_dwords = 0xFFFFFFFFUL; in r100_cs_track_clear()
2441 track->num_arrays = 11; in r100_cs_track_clear()
2442 track->max_indx = 0x00FFFFFFUL; in r100_cs_track_clear()
2443 for (i = 0; i < track->num_arrays; i++) { in r100_cs_track_clear()
2444 track->arrays[i].robj = NULL; in r100_cs_track_clear()
2445 track->arrays[i].esize = 0x7F; in r100_cs_track_clear()
2447 for (i = 0; i < track->num_texture; i++) { in r100_cs_track_clear()
2448 track->textures[i].compress_format = R100_TRACK_COMP_NONE; in r100_cs_track_clear()
2449 track->textures[i].pitch = 16536; in r100_cs_track_clear()
2450 track->textures[i].width = 16536; in r100_cs_track_clear()
2451 track->textures[i].height = 16536; in r100_cs_track_clear()
2452 track->textures[i].width_11 = 1 << 11; in r100_cs_track_clear()
2453 track->textures[i].height_11 = 1 << 11; in r100_cs_track_clear()
2454 track->textures[i].num_levels = 12; in r100_cs_track_clear()
2456 track->textures[i].tex_coord_type = 0; in r100_cs_track_clear()
2457 track->textures[i].txdepth = 0; in r100_cs_track_clear()
2459 track->textures[i].txdepth = 16; in r100_cs_track_clear()
2460 track->textures[i].tex_coord_type = 1; in r100_cs_track_clear()
2462 track->textures[i].cpp = 64; in r100_cs_track_clear()
2463 track->textures[i].robj = NULL; in r100_cs_track_clear()
2465 track->textures[i].enabled = false; in r100_cs_track_clear()
2466 track->textures[i].lookup_disable = false; in r100_cs_track_clear()
2467 track->textures[i].roundup_w = true; in r100_cs_track_clear()
2468 track->textures[i].roundup_h = true; in r100_cs_track_clear()
2469 if (track->separate_cube) in r100_cs_track_clear()
2471 track->textures[i].cube_info[face].robj = NULL; in r100_cs_track_clear()
2472 track->textures[i].cube_info[face].width = 16536; in r100_cs_track_clear()
2473 track->textures[i].cube_info[face].height = 16536; in r100_cs_track_clear()
2474 track->textures[i].cube_info[face].offset = 0; in r100_cs_track_clear()