Lines Matching refs:track
1307 struct r100_cs_track *track; in r100_packet3_load_vbpntr() local
1313 track = (struct r100_cs_track *)p->track; in r100_packet3_load_vbpntr()
1321 track->num_arrays = c; in r100_packet3_load_vbpntr()
1333 track->arrays[i + 0].esize = idx_value >> 8; in r100_packet3_load_vbpntr()
1334 track->arrays[i + 0].robj = reloc->robj; in r100_packet3_load_vbpntr()
1335 track->arrays[i + 0].esize &= 0x7F; in r100_packet3_load_vbpntr()
1344 track->arrays[i + 1].robj = reloc->robj; in r100_packet3_load_vbpntr()
1345 track->arrays[i + 1].esize = idx_value >> 24; in r100_packet3_load_vbpntr()
1346 track->arrays[i + 1].esize &= 0x7F; in r100_packet3_load_vbpntr()
1358 track->arrays[i + 0].robj = reloc->robj; in r100_packet3_load_vbpntr()
1359 track->arrays[i + 0].esize = idx_value >> 8; in r100_packet3_load_vbpntr()
1360 track->arrays[i + 0].esize &= 0x7F; in r100_packet3_load_vbpntr()
1556 struct r100_cs_track *track; in r100_packet0_check() local
1565 track = (struct r100_cs_track *)p->track; in r100_packet0_check()
1595 track->zb.robj = reloc->robj; in r100_packet0_check()
1596 track->zb.offset = idx_value; in r100_packet0_check()
1597 track->zb_dirty = true; in r100_packet0_check()
1608 track->cb[0].robj = reloc->robj; in r100_packet0_check()
1609 track->cb[0].offset = idx_value; in r100_packet0_check()
1610 track->cb_dirty = true; in r100_packet0_check()
1635 track->textures[i].robj = reloc->robj; in r100_packet0_check()
1636 track->tex_dirty = true; in r100_packet0_check()
1651 track->textures[0].cube_info[i].offset = idx_value; in r100_packet0_check()
1653 track->textures[0].cube_info[i].robj = reloc->robj; in r100_packet0_check()
1654 track->tex_dirty = true; in r100_packet0_check()
1669 track->textures[1].cube_info[i].offset = idx_value; in r100_packet0_check()
1671 track->textures[1].cube_info[i].robj = reloc->robj; in r100_packet0_check()
1672 track->tex_dirty = true; in r100_packet0_check()
1687 track->textures[2].cube_info[i].offset = idx_value; in r100_packet0_check()
1689 track->textures[2].cube_info[i].robj = reloc->robj; in r100_packet0_check()
1690 track->tex_dirty = true; in r100_packet0_check()
1693 track->maxy = ((idx_value >> 16) & 0x7FF); in r100_packet0_check()
1694 track->cb_dirty = true; in r100_packet0_check()
1695 track->zb_dirty = true; in r100_packet0_check()
1717 track->cb[0].pitch = idx_value & RADEON_COLORPITCH_MASK; in r100_packet0_check()
1718 track->cb_dirty = true; in r100_packet0_check()
1721 track->zb.pitch = idx_value & RADEON_DEPTHPITCH_MASK; in r100_packet0_check()
1722 track->zb_dirty = true; in r100_packet0_check()
1731 track->cb[0].cpp = 1; in r100_packet0_check()
1736 track->cb[0].cpp = 2; in r100_packet0_check()
1739 track->cb[0].cpp = 4; in r100_packet0_check()
1746 track->z_enabled = !!(idx_value & RADEON_Z_ENABLE); in r100_packet0_check()
1747 track->cb_dirty = true; in r100_packet0_check()
1748 track->zb_dirty = true; in r100_packet0_check()
1753 track->zb.cpp = 2; in r100_packet0_check()
1761 track->zb.cpp = 4; in r100_packet0_check()
1766 track->zb_dirty = true; in r100_packet0_check()
1781 for (i = 0; i < track->num_texture; i++) in r100_packet0_check()
1782 track->textures[i].enabled = !!(temp & (1 << i)); in r100_packet0_check()
1783 track->tex_dirty = true; in r100_packet0_check()
1787 track->vap_vf_cntl = idx_value; in r100_packet0_check()
1790 track->vtx_size = r100_get_vtx_size(idx_value); in r100_packet0_check()
1796 track->textures[i].width = (idx_value & RADEON_TEX_USIZE_MASK) + 1; in r100_packet0_check()
1797 track->textures[i].height = ((idx_value & RADEON_TEX_VSIZE_MASK) >> RADEON_TEX_VSIZE_SHIFT) + 1; in r100_packet0_check()
1798 track->tex_dirty = true; in r100_packet0_check()
1804 track->textures[i].pitch = idx_value + 32; in r100_packet0_check()
1805 track->tex_dirty = true; in r100_packet0_check()
1811 track->textures[i].num_levels = ((idx_value & RADEON_MAX_MIP_LEVEL_MASK) in r100_packet0_check()
1815 track->textures[i].roundup_w = false; in r100_packet0_check()
1818 track->textures[i].roundup_h = false; in r100_packet0_check()
1819 track->tex_dirty = true; in r100_packet0_check()
1826 track->textures[i].use_pitch = 1; in r100_packet0_check()
1828 track->textures[i].use_pitch = 0; in r100_packet0_check()
1829 …track->textures[i].width = 1 << ((idx_value >> RADEON_TXFORMAT_WIDTH_SHIFT) & RADEON_TXFORMAT_WIDT… in r100_packet0_check()
1830 …track->textures[i].height = 1 << ((idx_value >> RADEON_TXFORMAT_HEIGHT_SHIFT) & RADEON_TXFORMAT_HE… in r100_packet0_check()
1833 track->textures[i].tex_coord_type = 2; in r100_packet0_check()
1838 track->textures[i].cpp = 1; in r100_packet0_check()
1839 track->textures[i].compress_format = R100_TRACK_COMP_NONE; in r100_packet0_check()
1850 track->textures[i].cpp = 2; in r100_packet0_check()
1851 track->textures[i].compress_format = R100_TRACK_COMP_NONE; in r100_packet0_check()
1857 track->textures[i].cpp = 4; in r100_packet0_check()
1858 track->textures[i].compress_format = R100_TRACK_COMP_NONE; in r100_packet0_check()
1861 track->textures[i].cpp = 1; in r100_packet0_check()
1862 track->textures[i].compress_format = R100_TRACK_COMP_DXT1; in r100_packet0_check()
1866 track->textures[i].cpp = 1; in r100_packet0_check()
1867 track->textures[i].compress_format = R100_TRACK_COMP_DXT35; in r100_packet0_check()
1870 track->textures[i].cube_info[4].width = 1 << ((idx_value >> 16) & 0xf); in r100_packet0_check()
1871 track->textures[i].cube_info[4].height = 1 << ((idx_value >> 20) & 0xf); in r100_packet0_check()
1872 track->tex_dirty = true; in r100_packet0_check()
1880 track->textures[i].cube_info[face].width = 1 << ((tmp >> (face * 8)) & 0xf); in r100_packet0_check()
1881 track->textures[i].cube_info[face].height = 1 << ((tmp >> ((face * 8) + 4)) & 0xf); in r100_packet0_check()
1883 track->tex_dirty = true; in r100_packet0_check()
1915 struct r100_cs_track *track; in r100_packet3_check() local
1922 track = (struct r100_cs_track *)p->track; in r100_packet3_check()
1951 track->num_arrays = 1; in r100_packet3_check()
1952 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 2)); in r100_packet3_check()
1954 track->arrays[0].robj = reloc->robj; in r100_packet3_check()
1955 track->arrays[0].esize = track->vtx_size; in r100_packet3_check()
1957 track->max_indx = radeon_get_ib_value(p, idx+1); in r100_packet3_check()
1959 track->vap_vf_cntl = radeon_get_ib_value(p, idx+3); in r100_packet3_check()
1960 track->immd_dwords = pkt->count - 1; in r100_packet3_check()
1961 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
1970 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 0)); in r100_packet3_check()
1971 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1); in r100_packet3_check()
1972 track->immd_dwords = pkt->count - 1; in r100_packet3_check()
1973 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
1983 track->vap_vf_cntl = radeon_get_ib_value(p, idx); in r100_packet3_check()
1984 track->immd_dwords = pkt->count; in r100_packet3_check()
1985 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
1991 track->vap_vf_cntl = radeon_get_ib_value(p, idx); in r100_packet3_check()
1992 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
1998 track->vap_vf_cntl = radeon_get_ib_value(p, idx); in r100_packet3_check()
1999 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
2005 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1); in r100_packet3_check()
2006 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
2012 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1); in r100_packet3_check()
2013 r = r100_cs_track_check(p->rdev, track); in r100_packet3_check()
2035 struct r100_cs_track *track; in r100_cs_parse() local
2038 track = kzalloc(sizeof(*track), GFP_KERNEL); in r100_cs_parse()
2039 if (!track) in r100_cs_parse()
2041 r100_cs_track_clear(p->rdev, track); in r100_cs_parse()
2042 p->track = track; in r100_cs_parse()
2126 struct r100_cs_track *track, unsigned idx) in r100_cs_track_cube() argument
2131 unsigned compress_format = track->textures[idx].compress_format; in r100_cs_track_cube()
2134 cube_robj = track->textures[idx].cube_info[face].robj; in r100_cs_track_cube()
2135 w = track->textures[idx].cube_info[face].width; in r100_cs_track_cube()
2136 h = track->textures[idx].cube_info[face].height; in r100_cs_track_cube()
2142 size *= track->textures[idx].cpp; in r100_cs_track_cube()
2144 size += track->textures[idx].cube_info[face].offset; in r100_cs_track_cube()
2149 r100_cs_track_texture_print(&track->textures[idx]); in r100_cs_track_cube()
2157 struct r100_cs_track *track) in r100_cs_track_texture_check() argument
2164 for (u = 0; u < track->num_texture; u++) { in r100_cs_track_texture_check()
2165 if (!track->textures[u].enabled) in r100_cs_track_texture_check()
2167 if (track->textures[u].lookup_disable) in r100_cs_track_texture_check()
2169 robj = track->textures[u].robj; in r100_cs_track_texture_check()
2175 for (i = 0; i <= track->textures[u].num_levels; i++) { in r100_cs_track_texture_check()
2176 if (track->textures[u].use_pitch) { in r100_cs_track_texture_check()
2178 w = (track->textures[u].pitch / track->textures[u].cpp) / (1 << i); in r100_cs_track_texture_check()
2180 w = track->textures[u].pitch / (1 << i); in r100_cs_track_texture_check()
2182 w = track->textures[u].width; in r100_cs_track_texture_check()
2184 w |= track->textures[u].width_11; in r100_cs_track_texture_check()
2186 if (track->textures[u].roundup_w) in r100_cs_track_texture_check()
2189 h = track->textures[u].height; in r100_cs_track_texture_check()
2191 h |= track->textures[u].height_11; in r100_cs_track_texture_check()
2193 if (track->textures[u].roundup_h) in r100_cs_track_texture_check()
2195 if (track->textures[u].tex_coord_type == 1) { in r100_cs_track_texture_check()
2196 d = (1 << track->textures[u].txdepth) / (1 << i); in r100_cs_track_texture_check()
2202 if (track->textures[u].compress_format) { in r100_cs_track_texture_check()
2204 size += r100_track_compress_size(track->textures[u].compress_format, w, h) * d; in r100_cs_track_texture_check()
2209 size *= track->textures[u].cpp; in r100_cs_track_texture_check()
2211 switch (track->textures[u].tex_coord_type) { in r100_cs_track_texture_check()
2216 if (track->separate_cube) { in r100_cs_track_texture_check()
2217 ret = r100_cs_track_cube(rdev, track, u); in r100_cs_track_texture_check()
2225 "%u\n", track->textures[u].tex_coord_type, u); in r100_cs_track_texture_check()
2231 r100_cs_track_texture_print(&track->textures[u]); in r100_cs_track_texture_check()
2238 int r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track) in r100_cs_track_check() argument
2244 unsigned num_cb = track->cb_dirty ? track->num_cb : 0; in r100_cs_track_check()
2246 if (num_cb && !track->zb_cb_clear && !track->color_channel_mask && in r100_cs_track_check()
2247 !track->blend_read_enable) in r100_cs_track_check()
2251 if (track->cb[i].robj == NULL) { in r100_cs_track_check()
2255 size = track->cb[i].pitch * track->cb[i].cpp * track->maxy; in r100_cs_track_check()
2256 size += track->cb[i].offset; in r100_cs_track_check()
2257 if (size > radeon_bo_size(track->cb[i].robj)) { in r100_cs_track_check()
2260 radeon_bo_size(track->cb[i].robj)); in r100_cs_track_check()
2262 i, track->cb[i].pitch, track->cb[i].cpp, in r100_cs_track_check()
2263 track->cb[i].offset, track->maxy); in r100_cs_track_check()
2267 track->cb_dirty = false; in r100_cs_track_check()
2269 if (track->zb_dirty && track->z_enabled) { in r100_cs_track_check()
2270 if (track->zb.robj == NULL) { in r100_cs_track_check()
2274 size = track->zb.pitch * track->zb.cpp * track->maxy; in r100_cs_track_check()
2275 size += track->zb.offset; in r100_cs_track_check()
2276 if (size > radeon_bo_size(track->zb.robj)) { in r100_cs_track_check()
2279 radeon_bo_size(track->zb.robj)); in r100_cs_track_check()
2281 track->zb.pitch, track->zb.cpp, in r100_cs_track_check()
2282 track->zb.offset, track->maxy); in r100_cs_track_check()
2286 track->zb_dirty = false; in r100_cs_track_check()
2288 if (track->aa_dirty && track->aaresolve) { in r100_cs_track_check()
2289 if (track->aa.robj == NULL) { in r100_cs_track_check()
2294 size = track->aa.pitch * track->cb[0].cpp * track->maxy; in r100_cs_track_check()
2295 size += track->aa.offset; in r100_cs_track_check()
2296 if (size > radeon_bo_size(track->aa.robj)) { in r100_cs_track_check()
2299 radeon_bo_size(track->aa.robj)); in r100_cs_track_check()
2301 i, track->aa.pitch, track->cb[0].cpp, in r100_cs_track_check()
2302 track->aa.offset, track->maxy); in r100_cs_track_check()
2306 track->aa_dirty = false; in r100_cs_track_check()
2308 prim_walk = (track->vap_vf_cntl >> 4) & 0x3; in r100_cs_track_check()
2309 if (track->vap_vf_cntl & (1 << 14)) { in r100_cs_track_check()
2310 nverts = track->vap_alt_nverts; in r100_cs_track_check()
2312 nverts = (track->vap_vf_cntl >> 16) & 0xFFFF; in r100_cs_track_check()
2316 for (i = 0; i < track->num_arrays; i++) { in r100_cs_track_check()
2317 size = track->arrays[i].esize * track->max_indx * 4; in r100_cs_track_check()
2318 if (track->arrays[i].robj == NULL) { in r100_cs_track_check()
2323 if (size > radeon_bo_size(track->arrays[i].robj)) { in r100_cs_track_check()
2327 radeon_bo_size(track->arrays[i].robj) in r100_cs_track_check()
2329 DRM_ERROR("Max indices %u\n", track->max_indx); in r100_cs_track_check()
2335 for (i = 0; i < track->num_arrays; i++) { in r100_cs_track_check()
2336 size = track->arrays[i].esize * (nverts - 1) * 4; in r100_cs_track_check()
2337 if (track->arrays[i].robj == NULL) { in r100_cs_track_check()
2342 if (size > radeon_bo_size(track->arrays[i].robj)) { in r100_cs_track_check()
2346 radeon_bo_size(track->arrays[i].robj) in r100_cs_track_check()
2353 size = track->vtx_size * nverts; in r100_cs_track_check()
2354 if (size != track->immd_dwords) { in r100_cs_track_check()
2356 track->immd_dwords, size); in r100_cs_track_check()
2358 nverts, track->vtx_size); in r100_cs_track_check()
2368 if (track->tex_dirty) { in r100_cs_track_check()
2369 track->tex_dirty = false; in r100_cs_track_check()
2370 return r100_cs_track_texture_check(rdev, track); in r100_cs_track_check()
2375 void r100_cs_track_clear(struct radeon_device *rdev, struct r100_cs_track *track) in r100_cs_track_clear() argument
2379 track->cb_dirty = true; in r100_cs_track_clear()
2380 track->zb_dirty = true; in r100_cs_track_clear()
2381 track->tex_dirty = true; in r100_cs_track_clear()
2382 track->aa_dirty = true; in r100_cs_track_clear()
2385 track->num_cb = 1; in r100_cs_track_clear()
2387 track->num_texture = 3; in r100_cs_track_clear()
2389 track->num_texture = 6; in r100_cs_track_clear()
2390 track->maxy = 2048; in r100_cs_track_clear()
2391 track->separate_cube = 1; in r100_cs_track_clear()
2393 track->num_cb = 4; in r100_cs_track_clear()
2394 track->num_texture = 16; in r100_cs_track_clear()
2395 track->maxy = 4096; in r100_cs_track_clear()
2396 track->separate_cube = 0; in r100_cs_track_clear()
2397 track->aaresolve = false; in r100_cs_track_clear()
2398 track->aa.robj = NULL; in r100_cs_track_clear()
2401 for (i = 0; i < track->num_cb; i++) { in r100_cs_track_clear()
2402 track->cb[i].robj = NULL; in r100_cs_track_clear()
2403 track->cb[i].pitch = 8192; in r100_cs_track_clear()
2404 track->cb[i].cpp = 16; in r100_cs_track_clear()
2405 track->cb[i].offset = 0; in r100_cs_track_clear()
2407 track->z_enabled = true; in r100_cs_track_clear()
2408 track->zb.robj = NULL; in r100_cs_track_clear()
2409 track->zb.pitch = 8192; in r100_cs_track_clear()
2410 track->zb.cpp = 4; in r100_cs_track_clear()
2411 track->zb.offset = 0; in r100_cs_track_clear()
2412 track->vtx_size = 0x7F; in r100_cs_track_clear()
2413 track->immd_dwords = 0xFFFFFFFFUL; in r100_cs_track_clear()
2414 track->num_arrays = 11; in r100_cs_track_clear()
2415 track->max_indx = 0x00FFFFFFUL; in r100_cs_track_clear()
2416 for (i = 0; i < track->num_arrays; i++) { in r100_cs_track_clear()
2417 track->arrays[i].robj = NULL; in r100_cs_track_clear()
2418 track->arrays[i].esize = 0x7F; in r100_cs_track_clear()
2420 for (i = 0; i < track->num_texture; i++) { in r100_cs_track_clear()
2421 track->textures[i].compress_format = R100_TRACK_COMP_NONE; in r100_cs_track_clear()
2422 track->textures[i].pitch = 16536; in r100_cs_track_clear()
2423 track->textures[i].width = 16536; in r100_cs_track_clear()
2424 track->textures[i].height = 16536; in r100_cs_track_clear()
2425 track->textures[i].width_11 = 1 << 11; in r100_cs_track_clear()
2426 track->textures[i].height_11 = 1 << 11; in r100_cs_track_clear()
2427 track->textures[i].num_levels = 12; in r100_cs_track_clear()
2429 track->textures[i].tex_coord_type = 0; in r100_cs_track_clear()
2430 track->textures[i].txdepth = 0; in r100_cs_track_clear()
2432 track->textures[i].txdepth = 16; in r100_cs_track_clear()
2433 track->textures[i].tex_coord_type = 1; in r100_cs_track_clear()
2435 track->textures[i].cpp = 64; in r100_cs_track_clear()
2436 track->textures[i].robj = NULL; in r100_cs_track_clear()
2438 track->textures[i].enabled = false; in r100_cs_track_clear()
2439 track->textures[i].lookup_disable = false; in r100_cs_track_clear()
2440 track->textures[i].roundup_w = true; in r100_cs_track_clear()
2441 track->textures[i].roundup_h = true; in r100_cs_track_clear()
2442 if (track->separate_cube) in r100_cs_track_clear()
2444 track->textures[i].cube_info[face].robj = NULL; in r100_cs_track_clear()
2445 track->textures[i].cube_info[face].width = 16536; in r100_cs_track_clear()
2446 track->textures[i].cube_info[face].height = 16536; in r100_cs_track_clear()
2447 track->textures[i].cube_info[face].offset = 0; in r100_cs_track_clear()