Lines Matching refs:track

1315 	struct r100_cs_track *track;
1321 track = (struct r100_cs_track *)p->track;
1329 track->num_arrays = c;
1341 track->arrays[i + 0].esize = idx_value >> 8;
1342 track->arrays[i + 0].robj = reloc->robj;
1343 track->arrays[i + 0].esize &= 0x7F;
1352 track->arrays[i + 1].robj = reloc->robj;
1353 track->arrays[i + 1].esize = idx_value >> 24;
1354 track->arrays[i + 1].esize &= 0x7F;
1366 track->arrays[i + 0].robj = reloc->robj;
1367 track->arrays[i + 0].esize = idx_value >> 8;
1368 track->arrays[i + 0].esize &= 0x7F;
1564 struct r100_cs_track *track;
1573 track = (struct r100_cs_track *)p->track;
1603 track->zb.robj = reloc->robj;
1604 track->zb.offset = idx_value;
1605 track->zb_dirty = true;
1616 track->cb[0].robj = reloc->robj;
1617 track->cb[0].offset = idx_value;
1618 track->cb_dirty = true;
1643 track->textures[i].robj = reloc->robj;
1644 track->tex_dirty = true;
1659 track->textures[0].cube_info[i].offset = idx_value;
1661 track->textures[0].cube_info[i].robj = reloc->robj;
1662 track->tex_dirty = true;
1677 track->textures[1].cube_info[i].offset = idx_value;
1679 track->textures[1].cube_info[i].robj = reloc->robj;
1680 track->tex_dirty = true;
1695 track->textures[2].cube_info[i].offset = idx_value;
1697 track->textures[2].cube_info[i].robj = reloc->robj;
1698 track->tex_dirty = true;
1701 track->maxy = ((idx_value >> 16) & 0x7FF);
1702 track->cb_dirty = true;
1703 track->zb_dirty = true;
1725 track->cb[0].pitch = idx_value & RADEON_COLORPITCH_MASK;
1726 track->cb_dirty = true;
1729 track->zb.pitch = idx_value & RADEON_DEPTHPITCH_MASK;
1730 track->zb_dirty = true;
1739 track->cb[0].cpp = 1;
1744 track->cb[0].cpp = 2;
1747 track->cb[0].cpp = 4;
1754 track->z_enabled = !!(idx_value & RADEON_Z_ENABLE);
1755 track->cb_dirty = true;
1756 track->zb_dirty = true;
1761 track->zb.cpp = 2;
1769 track->zb.cpp = 4;
1774 track->zb_dirty = true;
1789 for (i = 0; i < track->num_texture; i++)
1790 track->textures[i].enabled = !!(temp & (1 << i));
1791 track->tex_dirty = true;
1795 track->vap_vf_cntl = idx_value;
1798 track->vtx_size = r100_get_vtx_size(idx_value);
1804 track->textures[i].width = (idx_value & RADEON_TEX_USIZE_MASK) + 1;
1805 track->textures[i].height = ((idx_value & RADEON_TEX_VSIZE_MASK) >> RADEON_TEX_VSIZE_SHIFT) + 1;
1806 track->tex_dirty = true;
1812 track->textures[i].pitch = idx_value + 32;
1813 track->tex_dirty = true;
1819 track->textures[i].num_levels = ((idx_value & RADEON_MAX_MIP_LEVEL_MASK)
1823 track->textures[i].roundup_w = false;
1826 track->textures[i].roundup_h = false;
1827 track->tex_dirty = true;
1834 track->textures[i].use_pitch = true;
1836 track->textures[i].use_pitch = false;
1837 track->textures[i].width = 1 << ((idx_value & RADEON_TXFORMAT_WIDTH_MASK) >> RADEON_TXFORMAT_WIDTH_SHIFT);
1838 track->textures[i].height = 1 << ((idx_value & RADEON_TXFORMAT_HEIGHT_MASK) >> RADEON_TXFORMAT_HEIGHT_SHIFT);
1841 track->textures[i].tex_coord_type = 2;
1846 track->textures[i].cpp = 1;
1847 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
1858 track->textures[i].cpp = 2;
1859 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
1865 track->textures[i].cpp = 4;
1866 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
1869 track->textures[i].cpp = 1;
1870 track->textures[i].compress_format = R100_TRACK_COMP_DXT1;
1874 track->textures[i].cpp = 1;
1875 track->textures[i].compress_format = R100_TRACK_COMP_DXT35;
1878 track->textures[i].cube_info[4].width = 1 << ((idx_value >> 16) & 0xf);
1879 track->textures[i].cube_info[4].height = 1 << ((idx_value >> 20) & 0xf);
1880 track->tex_dirty = true;
1888 track->textures[i].cube_info[face].width = 1 << ((tmp >> (face * 8)) & 0xf);
1889 track->textures[i].cube_info[face].height = 1 << ((tmp >> ((face * 8) + 4)) & 0xf);
1891 track->tex_dirty = true;
1922 struct r100_cs_track *track;
1929 track = (struct r100_cs_track *)p->track;
1958 track->num_arrays = 1;
1959 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 2));
1961 track->arrays[0].robj = reloc->robj;
1962 track->arrays[0].esize = track->vtx_size;
1964 track->max_indx = radeon_get_ib_value(p, idx+1);
1966 track->vap_vf_cntl = radeon_get_ib_value(p, idx+3);
1967 track->immd_dwords = pkt->count - 1;
1968 r = r100_cs_track_check(p->rdev, track);
1977 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 0));
1978 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1);
1979 track->immd_dwords = pkt->count - 1;
1980 r = r100_cs_track_check(p->rdev, track);
1990 track->vap_vf_cntl = radeon_get_ib_value(p, idx);
1991 track->immd_dwords = pkt->count;
1992 r = r100_cs_track_check(p->rdev, track);
1998 track->vap_vf_cntl = radeon_get_ib_value(p, idx);
1999 r = r100_cs_track_check(p->rdev, track);
2005 track->vap_vf_cntl = radeon_get_ib_value(p, idx);
2006 r = r100_cs_track_check(p->rdev, track);
2012 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1);
2013 r = r100_cs_track_check(p->rdev, track);
2019 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1);
2020 r = r100_cs_track_check(p->rdev, track);
2042 struct r100_cs_track *track;
2045 track = kzalloc(sizeof(*track), GFP_KERNEL);
2046 if (!track)
2048 r100_cs_track_clear(p->rdev, track);
2049 p->track = track;
2133 struct r100_cs_track *track, unsigned idx)
2138 unsigned compress_format = track->textures[idx].compress_format;
2141 cube_robj = track->textures[idx].cube_info[face].robj;
2142 w = track->textures[idx].cube_info[face].width;
2143 h = track->textures[idx].cube_info[face].height;
2149 size *= track->textures[idx].cpp;
2151 size += track->textures[idx].cube_info[face].offset;
2156 r100_cs_track_texture_print(&track->textures[idx]);
2164 struct r100_cs_track *track)
2171 for (u = 0; u < track->num_texture; u++) {
2172 if (!track->textures[u].enabled)
2174 if (track->textures[u].lookup_disable)
2176 robj = track->textures[u].robj;
2182 for (i = 0; i <= track->textures[u].num_levels; i++) {
2183 if (track->textures[u].use_pitch) {
2185 w = (track->textures[u].pitch / track->textures[u].cpp) / (1 << i);
2187 w = track->textures[u].pitch / (1 << i);
2189 w = track->textures[u].width;
2191 w |= track->textures[u].width_11;
2193 if (track->textures[u].roundup_w)
2196 h = track->textures[u].height;
2198 h |= track->textures[u].height_11;
2200 if (track->textures[u].roundup_h)
2202 if (track->textures[u].tex_coord_type == 1) {
2203 d = (1 << track->textures[u].txdepth) / (1 << i);
2209 if (track->textures[u].compress_format) {
2211 size += r100_track_compress_size(track->textures[u].compress_format, w, h) * d;
2216 size *= track->textures[u].cpp;
2218 switch (track->textures[u].tex_coord_type) {
2223 if (track->separate_cube) {
2224 ret = r100_cs_track_cube(rdev, track, u);
2232 "%u\n", track->textures[u].tex_coord_type, u);
2238 r100_cs_track_texture_print(&track->textures[u]);
2245 int r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track)
2251 unsigned num_cb = track->cb_dirty ? track->num_cb : 0;
2253 if (num_cb && !track->zb_cb_clear && !track->color_channel_mask &&
2254 !track->blend_read_enable)
2258 if (track->cb[i].robj == NULL) {
2262 size = track->cb[i].pitch * track->cb[i].cpp * track->maxy;
2263 size += track->cb[i].offset;
2264 if (size > radeon_bo_size(track->cb[i].robj)) {
2267 radeon_bo_size(track->cb[i].robj));
2269 i, track->cb[i].pitch, track->cb[i].cpp,
2270 track->cb[i].offset, track->maxy);
2274 track->cb_dirty = false;
2276 if (track->zb_dirty && track->z_enabled) {
2277 if (track->zb.robj == NULL) {
2281 size = track->zb.pitch * track->zb.cpp * track->maxy;
2282 size += track->zb.offset;
2283 if (size > radeon_bo_size(track->zb.robj)) {
2286 radeon_bo_size(track->zb.robj));
2288 track->zb.pitch, track->zb.cpp,
2289 track->zb.offset, track->maxy);
2293 track->zb_dirty = false;
2295 if (track->aa_dirty && track->aaresolve) {
2296 if (track->aa.robj == NULL) {
2301 size = track->aa.pitch * track->cb[0].cpp * track->maxy;
2302 size += track->aa.offset;
2303 if (size > radeon_bo_size(track->aa.robj)) {
2306 radeon_bo_size(track->aa.robj));
2308 i, track->aa.pitch, track->cb[0].cpp,
2309 track->aa.offset, track->maxy);
2313 track->aa_dirty = false;
2315 prim_walk = (track->vap_vf_cntl >> 4) & 0x3;
2316 if (track->vap_vf_cntl & (1 << 14)) {
2317 nverts = track->vap_alt_nverts;
2319 nverts = (track->vap_vf_cntl >> 16) & 0xFFFF;
2323 for (i = 0; i < track->num_arrays; i++) {
2324 size = track->arrays[i].esize * track->max_indx * 4UL;
2325 if (track->arrays[i].robj == NULL) {
2330 if (size > radeon_bo_size(track->arrays[i].robj)) {
2334 radeon_bo_size(track->arrays[i].robj)
2336 DRM_ERROR("Max indices %u\n", track->max_indx);
2342 for (i = 0; i < track->num_arrays; i++) {
2343 size = track->arrays[i].esize * (nverts - 1) * 4UL;
2344 if (track->arrays[i].robj == NULL) {
2349 if (size > radeon_bo_size(track->arrays[i].robj)) {
2353 radeon_bo_size(track->arrays[i].robj)
2360 size = track->vtx_size * nverts;
2361 if (size != track->immd_dwords) {
2363 track->immd_dwords, size);
2365 nverts, track->vtx_size);
2375 if (track->tex_dirty) {
2376 track->tex_dirty = false;
2377 return r100_cs_track_texture_check(rdev, track);
2382 void r100_cs_track_clear(struct radeon_device *rdev, struct r100_cs_track *track)
2386 track->cb_dirty = true;
2387 track->zb_dirty = true;
2388 track->tex_dirty = true;
2389 track->aa_dirty = true;
2392 track->num_cb = 1;
2394 track->num_texture = 3;
2396 track->num_texture = 6;
2397 track->maxy = 2048;
2398 track->separate_cube = true;
2400 track->num_cb = 4;
2401 track->num_texture = 16;
2402 track->maxy = 4096;
2403 track->separate_cube = false;
2404 track->aaresolve = false;
2405 track->aa.robj = NULL;
2408 for (i = 0; i < track->num_cb; i++) {
2409 track->cb[i].robj = NULL;
2410 track->cb[i].pitch = 8192;
2411 track->cb[i].cpp = 16;
2412 track->cb[i].offset = 0;
2414 track->z_enabled = true;
2415 track->zb.robj = NULL;
2416 track->zb.pitch = 8192;
2417 track->zb.cpp = 4;
2418 track->zb.offset = 0;
2419 track->vtx_size = 0x7F;
2420 track->immd_dwords = 0xFFFFFFFFUL;
2421 track->num_arrays = 11;
2422 track->max_indx = 0x00FFFFFFUL;
2423 for (i = 0; i < track->num_arrays; i++) {
2424 track->arrays[i].robj = NULL;
2425 track->arrays[i].esize = 0x7F;
2427 for (i = 0; i < track->num_texture; i++) {
2428 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
2429 track->textures[i].pitch = 16536;
2430 track->textures[i].width = 16536;
2431 track->textures[i].height = 16536;
2432 track->textures[i].width_11 = 1 << 11;
2433 track->textures[i].height_11 = 1 << 11;
2434 track->textures[i].num_levels = 12;
2436 track->textures[i].tex_coord_type = 0;
2437 track->textures[i].txdepth = 0;
2439 track->textures[i].txdepth = 16;
2440 track->textures[i].tex_coord_type = 1;
2442 track->textures[i].cpp = 64;
2443 track->textures[i].robj = NULL;
2445 track->textures[i].enabled = false;
2446 track->textures[i].lookup_disable = false;
2447 track->textures[i].roundup_w = true;
2448 track->textures[i].roundup_h = true;
2449 if (track->separate_cube)
2451 track->textures[i].cube_info[face].robj = NULL;
2452 track->textures[i].cube_info[face].width = 16536;
2453 track->textures[i].cube_info[face].height = 16536;
2454 track->textures[i].cube_info[face].offset = 0;