Lines Matching defs:surf

191 					  struct eg_surface *surf,
194 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples;
195 surf->base_align = surf->bpe;
196 surf->palign = 1;
197 surf->halign = 1;
202 struct eg_surface *surf,
208 palign = MAX(64, track->group_size / surf->bpe);
209 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples;
210 surf->base_align = track->group_size;
211 surf->palign = palign;
212 surf->halign = 1;
213 if (surf->nbx & (palign - 1)) {
216 __func__, __LINE__, prefix, surf->nbx, palign);
224 struct eg_surface *surf,
230 palign = track->group_size / (8 * surf->bpe * surf->nsamples);
232 surf->layer_size = surf->nbx * surf->nby * surf->bpe;
233 surf->base_align = track->group_size;
234 surf->palign = palign;
235 surf->halign = 8;
236 if ((surf->nbx & (palign - 1))) {
239 __func__, __LINE__, prefix, surf->nbx, palign,
240 track->group_size, surf->bpe, surf->nsamples);
244 if ((surf->nby & (8 - 1))) {
247 __func__, __LINE__, prefix, surf->nby);
255 struct eg_surface *surf,
262 tileb = 64 * surf->bpe * surf->nsamples;
264 if (tileb > surf->tsplit) {
265 slice_pt = tileb / surf->tsplit;
269 palign = (8 * surf->bankw * track->npipes) * surf->mtilea;
270 halign = (8 * surf->bankh * surf->nbanks) / surf->mtilea;
272 mtile_pr = surf->nbx / palign;
273 mtile_ps = (mtile_pr * surf->nby) / halign;
274 surf->layer_size = mtile_ps * mtileb * slice_pt;
275 surf->base_align = (palign / 8) * (halign / 8) * tileb;
276 surf->palign = palign;
277 surf->halign = halign;
279 if ((surf->nbx & (palign - 1))) {
282 __func__, __LINE__, prefix, surf->nbx, palign);
286 if ((surf->nby & (halign - 1))) {
289 __func__, __LINE__, prefix, surf->nby, halign);
298 struct eg_surface *surf,
302 surf->bpe = r600_fmt_get_blocksize(surf->format);
304 switch (surf->mode) {
306 return evergreen_surface_check_linear(p, surf, prefix);
308 return evergreen_surface_check_linear_aligned(p, surf, prefix);
310 return evergreen_surface_check_1d(p, surf, prefix);
312 return evergreen_surface_check_2d(p, surf, prefix);
315 __func__, __LINE__, prefix, surf->mode);
322 struct eg_surface *surf,
325 switch (surf->mode) {
334 __func__, __LINE__, prefix, surf->mode);
338 switch (surf->nbanks) {
339 case 0: surf->nbanks = 2; break;
340 case 1: surf->nbanks = 4; break;
341 case 2: surf->nbanks = 8; break;
342 case 3: surf->nbanks = 16; break;
345 __func__, __LINE__, prefix, surf->nbanks);
348 switch (surf->bankw) {
349 case 0: surf->bankw = 1; break;
350 case 1: surf->bankw = 2; break;
351 case 2: surf->bankw = 4; break;
352 case 3: surf->bankw = 8; break;
355 __func__, __LINE__, prefix, surf->bankw);
358 switch (surf->bankh) {
359 case 0: surf->bankh = 1; break;
360 case 1: surf->bankh = 2; break;
361 case 2: surf->bankh = 4; break;
362 case 3: surf->bankh = 8; break;
365 __func__, __LINE__, prefix, surf->bankh);
368 switch (surf->mtilea) {
369 case 0: surf->mtilea = 1; break;
370 case 1: surf->mtilea = 2; break;
371 case 2: surf->mtilea = 4; break;
372 case 3: surf->mtilea = 8; break;
375 __func__, __LINE__, prefix, surf->mtilea);
378 switch (surf->tsplit) {
379 case 0: surf->tsplit = 64; break;
380 case 1: surf->tsplit = 128; break;
381 case 2: surf->tsplit = 256; break;
382 case 3: surf->tsplit = 512; break;
383 case 4: surf->tsplit = 1024; break;
384 case 5: surf->tsplit = 2048; break;
385 case 6: surf->tsplit = 4096; break;
388 __func__, __LINE__, prefix, surf->tsplit);
397 struct eg_surface surf;
405 surf.nbx = (pitch + 1) * 8;
406 surf.nby = ((slice + 1) * 64) / surf.nbx;
407 surf.mode = G_028C70_ARRAY_MODE(track->cb_color_info[id]);
408 surf.format = G_028C70_FORMAT(track->cb_color_info[id]);
409 surf.tsplit = G_028C74_TILE_SPLIT(track->cb_color_attrib[id]);
410 surf.nbanks = G_028C74_NUM_BANKS(track->cb_color_attrib[id]);
411 surf.bankw = G_028C74_BANK_WIDTH(track->cb_color_attrib[id]);
412 surf.bankh = G_028C74_BANK_HEIGHT(track->cb_color_attrib[id]);
413 surf.mtilea = G_028C74_MACRO_TILE_ASPECT(track->cb_color_attrib[id]);
414 surf.nsamples = 1;
416 if (!r600_fmt_is_valid_color(surf.format)) {
418 __func__, __LINE__, surf.format,
423 r = evergreen_surface_value_conv_check(p, &surf, "cb");
428 r = evergreen_surface_check(p, &surf, "cb");
438 if (offset & (surf.base_align - 1)) {
440 __func__, __LINE__, id, offset, surf.base_align);
444 offset += surf.layer_size * mslice;
450 if (!surf.mode) {
455 if (surf.nby > 8) {
456 min = surf.nby - 8;
460 for (nby = surf.nby; nby > min; nby--) {
461 size = nby * surf.nbx * surf.bpe * surf.nsamples;
467 surf.nby = nby;
468 slice = ((nby * surf.nbx) / 64) - 1;
469 if (!evergreen_surface_check(p, &surf, "cb")) {
471 tmp += surf.layer_size * mslice;
481 __func__, __LINE__, id, surf.layer_size,
484 dev_warn(p->dev, "%s:%d problematic surf: (%d %d) (%d %d %d %d %d %d %d)\n",
485 __func__, __LINE__, surf.nbx, surf.nby,
486 surf.mode, surf.bpe, surf.nsamples,
487 surf.bankw, surf.bankh,
488 surf.tsplit, surf.mtilea);
564 struct eg_surface surf;
572 surf.nbx = (pitch + 1) * 8;
573 surf.nby = ((slice + 1) * 64) / surf.nbx;
574 surf.mode = G_028040_ARRAY_MODE(track->db_z_info);
575 surf.format = G_028044_FORMAT(track->db_s_info);
576 surf.tsplit = G_028044_TILE_SPLIT(track->db_s_info);
577 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info);
578 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info);
579 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info);
580 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info);
581 surf.nsamples = 1;
583 if (surf.format != 1) {
585 __func__, __LINE__, surf.format);
589 surf.format = V_028C70_COLOR_8;
591 r = evergreen_surface_value_conv_check(p, &surf, "stencil");
596 r = evergreen_surface_check(p, &surf, NULL);
602 surf.format = V_028C70_COLOR_8_8_8_8;
603 r = evergreen_surface_check(p, &surf, "stencil");
613 if (offset & (surf.base_align - 1)) {
615 __func__, __LINE__, offset, surf.base_align);
618 offset += surf.layer_size * mslice;
622 __func__, __LINE__, surf.layer_size,
632 if (offset & (surf.base_align - 1)) {
634 __func__, __LINE__, offset, surf.base_align);
637 offset += surf.layer_size * mslice;
641 __func__, __LINE__, surf.layer_size,
649 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby);
661 struct eg_surface surf;
669 surf.nbx = (pitch + 1) * 8;
670 surf.nby = ((slice + 1) * 64) / surf.nbx;
671 surf.mode = G_028040_ARRAY_MODE(track->db_z_info);
672 surf.format = G_028040_FORMAT(track->db_z_info);
673 surf.tsplit = G_028040_TILE_SPLIT(track->db_z_info);
674 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info);
675 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info);
676 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info);
677 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info);
678 surf.nsamples = 1;
680 switch (surf.format) {
682 surf.format = V_028C70_COLOR_16;
686 surf.format = V_028C70_COLOR_8_8_8_8;
690 __func__, __LINE__, surf.format);
694 r = evergreen_surface_value_conv_check(p, &surf, "depth");
702 r = evergreen_surface_check(p, &surf, "depth");
711 if (offset & (surf.base_align - 1)) {
713 __func__, __LINE__, offset, surf.base_align);
716 offset += surf.layer_size * mslice;
720 __func__, __LINE__, surf.layer_size,
727 if (offset & (surf.base_align - 1)) {
729 __func__, __LINE__, offset, surf.base_align);
732 offset += surf.layer_size * mslice;
736 __func__, __LINE__, surf.layer_size,
744 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby);
758 struct eg_surface surf;
778 surf.format = G_03001C_DATA_FORMAT(texdw[7]);
779 surf.nbx = (G_030000_PITCH(texdw[0]) + 1) * 8;
780 surf.nbx = r600_fmt_get_nblocksx(surf.format, surf.nbx);
781 surf.nby = r600_fmt_get_nblocksy(surf.format, height);
782 surf.mode = G_030004_ARRAY_MODE(texdw[1]);
783 surf.tsplit = G_030018_TILE_SPLIT(texdw[6]);
784 surf.nbanks = G_03001C_NUM_BANKS(texdw[7]);
785 surf.bankw = G_03001C_BANK_WIDTH(texdw[7]);
786 surf.bankh = G_03001C_BANK_HEIGHT(texdw[7]);
787 surf.mtilea = G_03001C_MACRO_TILE_ASPECT(texdw[7]);
788 surf.nsamples = 1;
792 if (!r600_fmt_is_valid_texture(surf.format, p->family)) {
794 __func__, __LINE__, surf.format);
807 surf.nsamples = 1 << llevel;
819 r = evergreen_surface_value_conv_check(p, &surf, "texture");
825 evergreen_surface_check(p, &surf, NULL);
826 surf.nby = ALIGN(surf.nby, surf.halign);
828 r = evergreen_surface_check(p, &surf, "texture");
837 if (toffset & (surf.base_align - 1)) {
839 __func__, __LINE__, toffset, surf.base_align);
842 if (surf.nsamples <= 1 && moffset & (surf.base_align - 1)) {
844 __func__, __LINE__, moffset, surf.base_align);
848 toffset += surf.layer_size * depth;
850 toffset += surf.layer_size * mslice;
855 __func__, __LINE__, surf.layer_size,
858 surf.nbx, surf.nby);
879 surf.nbx = r600_fmt_get_nblocksx(surf.format, w);
880 surf.nby = r600_fmt_get_nblocksy(surf.format, h);
882 switch (surf.mode) {
884 if (surf.nbx < surf.palign || surf.nby < surf.halign) {
885 surf.mode = ARRAY_1D_TILED_THIN1;
888 evergreen_surface_check(p, &surf, NULL);
896 __func__, __LINE__, surf.mode);
899 surf.nbx = ALIGN(surf.nbx, surf.palign);
900 surf.nby = ALIGN(surf.nby, surf.halign);
902 r = evergreen_surface_check(p, &surf, "mipmap");
908 moffset += surf.layer_size * d;
910 moffset += surf.layer_size * mslice;
916 __func__, __LINE__, i, surf.layer_size,
920 dev_warn(p->dev, "%s:%d problematic surf: (%d %d) (%d %d %d %d %d %d %d)\n",
921 __func__, __LINE__, surf.nbx, surf.nby,
922 surf.mode, surf.bpe, surf.nsamples,
923 surf.bankw, surf.bankh,
924 surf.tsplit, surf.mtilea);