Home | History | Annotate | Download | only in radeon

Lines Matching refs:track

1326 	struct r100_cs_track *track;
1332 track = (struct r100_cs_track *)p->track;
1340 track->num_arrays = c;
1352 track->arrays[i + 0].esize = idx_value >> 8;
1353 track->arrays[i + 0].robj = reloc->robj;
1354 track->arrays[i + 0].esize &= 0x7F;
1363 track->arrays[i + 1].robj = reloc->robj;
1364 track->arrays[i + 1].esize = idx_value >> 24;
1365 track->arrays[i + 1].esize &= 0x7F;
1377 track->arrays[i + 0].robj = reloc->robj;
1378 track->arrays[i + 0].esize = idx_value >> 8;
1379 track->arrays[i + 0].esize &= 0x7F;
1575 struct r100_cs_track *track;
1584 track = (struct r100_cs_track *)p->track;
1614 track->zb.robj = reloc->robj;
1615 track->zb.offset = idx_value;
1616 track->zb_dirty = true;
1627 track->cb[0].robj = reloc->robj;
1628 track->cb[0].offset = idx_value;
1629 track->cb_dirty = true;
1654 track->textures[i].robj = reloc->robj;
1655 track->tex_dirty = true;
1670 track->textures[0].cube_info[i].offset = idx_value;
1672 track->textures[0].cube_info[i].robj = reloc->robj;
1673 track->tex_dirty = true;
1688 track->textures[1].cube_info[i].offset = idx_value;
1690 track->textures[1].cube_info[i].robj = reloc->robj;
1691 track->tex_dirty = true;
1706 track
1708 track->textures[2].cube_info[i].robj = reloc->robj;
1709 track->tex_dirty = true;
1712 track->maxy = ((idx_value >> 16) & 0x7FF);
1713 track->cb_dirty = true;
1714 track->zb_dirty = true;
1736 track->cb[0].pitch = idx_value & RADEON_COLORPITCH_MASK;
1737 track->cb_dirty = true;
1740 track->zb.pitch = idx_value & RADEON_DEPTHPITCH_MASK;
1741 track->zb_dirty = true;
1750 track->cb[0].cpp = 1;
1755 track->cb[0].cpp = 2;
1758 track->cb[0].cpp = 4;
1765 track->z_enabled = !!(idx_value & RADEON_Z_ENABLE);
1766 track->cb_dirty = true;
1767 track->zb_dirty = true;
1772 track->zb.cpp = 2;
1780 track->zb.cpp = 4;
1785 track->zb_dirty = true;
1800 for (i = 0; i < track->num_texture; i++)
1801 track->textures[i].enabled = !!(temp & (1 << i));
1802 track->tex_dirty = true;
1806 track->vap_vf_cntl = idx_value;
1809 track->vtx_size = r100_get_vtx_size(idx_value);
1815 track->textures[i].width = (idx_value & RADEON_TEX_USIZE_MASK) + 1;
1816 track->textures[i].height = ((idx_value & RADEON_TEX_VSIZE_MASK) >> RADEON_TEX_VSIZE_SHIFT) + 1;
1817 track->tex_dirty = true;
1823 track->textures[i].pitch = idx_value + 32;
1824 track->tex_dirty = true;
1830 track->textures[i].num_levels = ((idx_value & RADEON_MAX_MIP_LEVEL_MASK)
1834 track->textures[i].roundup_w = false;
1837 track->textures[i].roundup_h = false;
1838 track->tex_dirty = true;
1845 track->textures[i].use_pitch = true;
1847 track->textures[i].use_pitch = false;
1848 track->textures[i].width = 1 << ((idx_value & RADEON_TXFORMAT_WIDTH_MASK) >> RADEON_TXFORMAT_WIDTH_SHIFT);
1849 track->textures[i].height = 1 << ((idx_value & RADEON_TXFORMAT_HEIGHT_MASK) >> RADEON_TXFORMAT_HEIGHT_SHIFT);
1852 track->textures[i].tex_coord_type = 2;
1857 track->textures[i].cpp = 1;
1858 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
1869 track->textures[i].cpp = 2;
1870 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
1876 track->textures[i].cpp = 4;
1877 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
1880 track->textures[i].cpp = 1;
1881 track->textures[i].compress_format = R100_TRACK_COMP_DXT1;
1885 track->textures[i].cpp = 1;
1886 track->textures[i].compress_format = R100_TRACK_COMP_DXT35;
1889 track->textures[i].cube_info[4].width = 1 << ((idx_value >> 16) & 0xf);
1890 track->textures[i].cube_info[4].height = 1 << ((idx_value >> 20) & 0xf);
1891 track->tex_dirty = true;
1899 track->textures[i].cube_info[face].width = 1 << ((tmp >> (face * 8)) & 0xf);
1900 track->textures[i].cube_info[face].height = 1 << ((tmp >> ((face * 8) + 4)) & 0xf);
1902 track->tex_dirty = true;
1933 struct r100_cs_track *track;
1940 track = (struct r100_cs_track *)p->track;
1969 track->num_arrays = 1;
1970 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 2));
1972 track->arrays[0].robj = reloc->robj;
1973 track->arrays[0].esize = track->vtx_size;
1975 track->max_indx = radeon_get_ib_value(p, idx+1);
1977 track->vap_vf_cntl = radeon_get_ib_value(p, idx+3);
1978 track->immd_dwords = pkt->count - 1;
1979 r = r100_cs_track_check(p->rdev, track);
1988 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 0));
1989 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1);
1990 track->immd_dwords = pkt->count - 1;
1991 r = r100_cs_track_check(p->rdev, track);
2001 track->vap_vf_cntl = radeon_get_ib_value(p, idx);
2002 track->immd_dwords = pkt->count;
2003 r = r100_cs_track_check(p->rdev, track);
2009 track->vap_vf_cntl = radeon_get_ib_value(p, idx);
2010 r = r100_cs_track_check(p->rdev, track);
2016 track->vap_vf_cntl = radeon_get_ib_value(p, idx);
2017 r = r100_cs_track_check(p->rdev, track);
2023 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1);
2024 r = r100_cs_track_check(p->rdev, track);
2030 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1);
2031 r = r100_cs_track_check(p->rdev, track);
2053 struct r100_cs_track *track;
2056 track = kzalloc(sizeof(*track), GFP_KERNEL);
2057 if (!track)
2059 r100_cs_track_clear(p->rdev, track);
2060 p->track = track;
2144 struct r100_cs_track *track, unsigned idx)
2149 unsigned compress_format = track->textures[idx].compress_format;
2152 cube_robj = track->textures[idx].cube_info[face].robj;
2153 w = track->textures[idx].cube_info[face].width;
2154 h = track->textures[idx].cube_info[face].height;
2160 size *= track->textures[idx].cpp;
2162 size += track->textures[idx].cube_info[face].offset;
2167 r100_cs_track_texture_print(&track->textures[idx]);
2175 struct r100_cs_track *track)
2182 for (u = 0; u < track->num_texture; u++) {
2183 if (!track->textures[u].enabled)
2185 if (track->textures[u].lookup_disable)
2187 robj = track->textures[u].robj;
2193 for (i = 0; i <= track->textures[u].num_levels; i++) {
2194 if (track->textures[u].use_pitch) {
2196 w = (track->textures[u].pitch / track->textures[u].cpp) / (1 << i);
2198 w = track->textures[u].pitch / (1 << i);
2200 w = track->textures[u].width;
2202 w |= track->textures[u].width_11;
2204 if (track->textures[u].roundup_w)
2207 h = track->textures[u].height;
2209 h |= track->textures[u].height_11;
2211 if (track->textures[u].roundup_h)
2213 if (track->textures[u].tex_coord_type == 1) {
2214 d = (1 << track->textures[u].txdepth) / (1 << i);
2220 if (track->textures[u].compress_format) {
2222 size += r100_track_compress_size(track->textures[u].compress_format, w, h) * d;
2227 size *= track->textures[u].cpp;
2229 switch (track->textures[u].tex_coord_type) {
2234 if (track->separate_cube) {
2235 ret = r100_cs_track_cube(rdev, track, u);
2243 "%u\n", track->textures[u].tex_coord_type, u);
2249 r100_cs_track_texture_print(&track->textures[u]);
2256 int r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track)
2262 unsigned num_cb = track->cb_dirty ? track->num_cb : 0;
2264 if (num_cb && !track->zb_cb_clear && !track->color_channel_mask &&
2265 !track->blend_read_enable)
2269 if (track->cb[i].robj == NULL) {
2273 size = track->cb[i].pitch * track->cb[i].cpp * track->maxy;
2274 size += track->cb[i].offset;
2275 if (size > radeon_bo_size(track->cb[i].robj)) {
2278 radeon_bo_size(track->cb[i].robj));
2280 i, track->cb[i].pitch, track->cb[i].cpp,
2281 track->cb[i].offset, track->maxy);
2285 track->cb_dirty = false;
2287 if (tracktrack->z_enabled) {
2288 if (track->zb.robj == NULL) {
2292 size = track->zb.pitch * track->zb.cpp * track->maxy;
2293 size += track->zb.offset;
2294 if (size > radeon_bo_size(track->zb.robj)) {
2297 radeon_bo_size(track->zb.robj));
2299 track->zb.pitch, track->zb.cpp,
2300 track->zb.offset, track->maxy);
2304 track->zb_dirty = false;
2306 if (track->aa_dirty && track->aaresolve) {
2307 if (track->aa.robj == NULL) {
2312 size = track->aa.pitch * track->cb[0].cpp * track->maxy;
2313 size += track->aa.offset;
2314 if (size > radeon_bo_size(track->aa.robj)) {
2317 radeon_bo_size(track->aa.robj));
2319 i, track->aa.pitch, track->cb[0].cpp,
2320 track->aa.offset, track->maxy);
2324 track->aa_dirty = false;
2326 prim_walk = (track->vap_vf_cntl >> 4) & 0x3;
2327 if (track->vap_vf_cntl & (1 << 14)) {
2328 nverts = track->vap_alt_nverts;
2330 nverts = (track->vap_vf_cntl >> 16) & 0xFFFF;
2334 for (i = 0; i < track->num_arrays; i++) {
2335 size = track->arrays[i].esize * track->max_indx * 4;
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)
2347 DRM_ERROR("Max indices %u\n", track->max_indx);
2353 for (i = 0; i < track->num_arrays; i++) {
2354 size = track->arrays[i].esize * (nverts - 1) * 4;
2355 if (track->arrays[i].robj == NULL) {
2360 if (size > radeon_bo_size(track->arrays[i].robj)) {
2364 radeon_bo_size(track->arrays[i].robj)
2371 size = track->vtx_size * nverts;
2372 if (size != track->immd_dwords) {
2374 track->immd_dwords, size);
2376 nverts, track->vtx_size);
2386 if (track->tex_dirty) {
2387 track->tex_dirty = false;
2388 return r100_cs_track_texture_check(rdev, track);
2393 void r100_cs_track_clear(struct radeon_device *rdev, struct r100_cs_track *track)
2397 track->cb_dirty = true;
2398 track->zb_dirty = true;
2399 track->tex_dirty = true;
2400 track->aa_dirty = true;
2403 track->num_cb = 1;
2405 track->num_texture = 3;
2407 track->num_texture = 6;
2408 track->maxy = 2048;
2409 track->separate_cube = true;
2411 track->num_cb = 4;
2412 track->num_texture = 16;
2413 track->maxy = 4096;
2414 track->separate_cube = false;
2415 track->aaresolve = false;
2416 track->aa.robj = NULL;
2419 for (i = 0; i < track->num_cb; i++) {
2420 track->cb[i].robj = NULL;
2421 track->cb[i].pitch = 8192;
2422 track->cb[i].cpp = 16;
2423 track->cb[i].offset = 0;
2425 track->z_enabled = true;
2426 track->zb.robj = NULL;
2427 track->zb.pitch = 8192;
2428 track->zb.cpp = 4;
2429 track->zb.offset = 0;
2430 track->vtx_size = 0x7F;
2431 track->immd_dwords = 0xFFFFFFFFUL;
2432 track->num_arrays = 11;
2433 track->max_indx = 0x00FFFFFFUL;
2434 for (i = 0; i < track->num_arrays; i++) {
2435 track->arrays[i].robj = NULL;
2436 track->arrays[i].esize = 0x7F;
2438 for (i = 0; i < track->num_texture; i++) {
2439 track->textures[i].compress_format = R100_TRACK_COMP_NONE;
2440 track->textures[i].pitch = 16536;
2441 track->textures[i].width = 16536;
2442 track->textures[i].height = 16536;
2443 track->textures[i].width_11 = 1 << 11;
2444 track->textures[i].height_11 = 1 << 11;
2445 track->textures[i].num_levels = 12;
2447 track->textures[i].tex_coord_type = 0;
2448 track->textures[i].txdepth = 0;
2450 track->textures[i].txdepth = 16;
2451 track->textures[i].tex_coord_type = 1;
2453 track->textures[i].cpp = 64;
2454 track->textures[i].robj = NULL;
2456 track->textures[i].enabled = false;
2457 track->textures[i].lookup_disable = false;
2458 track->textures[i].roundup_w = true;
2459 track->textures[i].roundup_h = true;
2460 if (track->separate_cube)
2462 track->textures[i].cube_info[face].robj = NULL;
2463 track->textures[i].cube_info[face].width = 16536;
2464 track->textures[i].cube_info[face].height = 16536;
2465 track->textures[i].cube_info[face].offset = 0;