Lines Matching defs:surf
190 struct eg_surface *surf,
193 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples;
194 surf->base_align = surf->bpe;
195 surf->palign = 1;
196 surf->halign = 1;
201 struct eg_surface *surf,
207 palign = MAX(64, track->group_size / surf->bpe);
208 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples;
209 surf->base_align = track->group_size;
210 surf->palign = palign;
211 surf->halign = 1;
212 if (surf->nbx & (palign - 1)) {
215 __func__, __LINE__, prefix, surf->nbx, palign);
223 struct eg_surface *surf,
229 palign = track->group_size / (8 * surf->bpe * surf->nsamples);
231 surf->layer_size = surf->nbx * surf->nby * surf->bpe;
232 surf->base_align = track->group_size;
233 surf->palign = palign;
234 surf->halign = 8;
235 if ((surf->nbx & (palign - 1))) {
238 __func__, __LINE__, prefix, surf->nbx, palign,
239 track->group_size, surf->bpe, surf->nsamples);
243 if ((surf->nby & (8 - 1))) {
246 __func__, __LINE__, prefix, surf->nby);
254 struct eg_surface *surf,
261 tileb = 64 * surf->bpe * surf->nsamples;
263 if (tileb > surf->tsplit) {
264 slice_pt = tileb / surf->tsplit;
268 palign = (8 * surf->bankw * track->npipes) * surf->mtilea;
269 halign = (8 * surf->bankh * surf->nbanks) / surf->mtilea;
271 mtile_pr = surf->nbx / palign;
272 mtile_ps = (mtile_pr * surf->nby) / halign;
273 surf->layer_size = mtile_ps * mtileb * slice_pt;
274 surf->base_align = (palign / 8) * (halign / 8) * tileb;
275 surf->palign = palign;
276 surf->halign = halign;
278 if ((surf->nbx & (palign - 1))) {
281 __func__, __LINE__, prefix, surf->nbx, palign);
285 if ((surf->nby & (halign - 1))) {
288 __func__, __LINE__, prefix, surf->nby, halign);
297 struct eg_surface *surf,
301 surf->bpe = r600_fmt_get_blocksize(surf->format);
303 switch (surf->mode) {
305 return evergreen_surface_check_linear(p, surf, prefix);
307 return evergreen_surface_check_linear_aligned(p, surf, prefix);
309 return evergreen_surface_check_1d(p, surf, prefix);
311 return evergreen_surface_check_2d(p, surf, prefix);
314 __func__, __LINE__, prefix, surf->mode);
321 struct eg_surface *surf,
324 switch (surf->mode) {
333 __func__, __LINE__, prefix, surf->mode);
337 switch (surf->nbanks) {
338 case 0: surf->nbanks = 2; break;
339 case 1: surf->nbanks = 4; break;
340 case 2: surf->nbanks = 8; break;
341 case 3: surf->nbanks = 16; break;
344 __func__, __LINE__, prefix, surf->nbanks);
347 switch (surf->bankw) {
348 case 0: surf->bankw = 1; break;
349 case 1: surf->bankw = 2; break;
350 case 2: surf->bankw = 4; break;
351 case 3: surf->bankw = 8; break;
354 __func__, __LINE__, prefix, surf->bankw);
357 switch (surf->bankh) {
358 case 0: surf->bankh = 1; break;
359 case 1: surf->bankh = 2; break;
360 case 2: surf->bankh = 4; break;
361 case 3: surf->bankh = 8; break;
364 __func__, __LINE__, prefix, surf->bankh);
367 switch (surf->mtilea) {
368 case 0: surf->mtilea = 1; break;
369 case 1: surf->mtilea = 2; break;
370 case 2: surf->mtilea = 4; break;
371 case 3: surf->mtilea = 8; break;
374 __func__, __LINE__, prefix, surf->mtilea);
377 switch (surf->tsplit) {
378 case 0: surf->tsplit = 64; break;
379 case 1: surf->tsplit = 128; break;
380 case 2: surf->tsplit = 256; break;
381 case 3: surf->tsplit = 512; break;
382 case 4: surf->tsplit = 1024; break;
383 case 5: surf->tsplit = 2048; break;
384 case 6: surf->tsplit = 4096; break;
387 __func__, __LINE__, prefix, surf->tsplit);
396 struct eg_surface surf;
404 surf.nbx = (pitch + 1) * 8;
405 surf.nby = ((slice + 1) * 64) / surf.nbx;
406 surf.mode = G_028C70_ARRAY_MODE(track->cb_color_info[id]);
407 surf.format = G_028C70_FORMAT(track->cb_color_info[id]);
408 surf.tsplit = G_028C74_TILE_SPLIT(track->cb_color_attrib[id]);
409 surf.nbanks = G_028C74_NUM_BANKS(track->cb_color_attrib[id]);
410 surf.bankw = G_028C74_BANK_WIDTH(track->cb_color_attrib[id]);
411 surf.bankh = G_028C74_BANK_HEIGHT(track->cb_color_attrib[id]);
412 surf.mtilea = G_028C74_MACRO_TILE_ASPECT(track->cb_color_attrib[id]);
413 surf.nsamples = 1;
415 if (!r600_fmt_is_valid_color(surf.format)) {
417 __func__, __LINE__, surf.format,
422 r = evergreen_surface_value_conv_check(p, &surf, "cb");
427 r = evergreen_surface_check(p, &surf, "cb");
437 if (offset & (surf.base_align - 1)) {
439 __func__, __LINE__, id, offset, surf.base_align);
443 offset += (u64)surf.layer_size * mslice;
449 if (!surf.mode) {
454 if (surf.nby > 8) {
455 min = surf.nby - 8;
459 for (nby = surf.nby; nby > min; nby--) {
460 size = nby * surf.nbx * surf.bpe * surf.nsamples;
466 surf.nby = nby;
467 slice = ((nby * surf.nbx) / 64) - 1;
468 if (!evergreen_surface_check(p, &surf, "cb")) {
470 tmp += (u64)surf.layer_size * mslice;
480 __func__, __LINE__, id, surf.layer_size,
483 dev_warn(p->dev, "%s:%d problematic surf: (%d %d) (%d %d %d %d %d %d %d)\n",
484 __func__, __LINE__, surf.nbx, surf.nby,
485 surf.mode, surf.bpe, surf.nsamples,
486 surf.bankw, surf.bankh,
487 surf.tsplit, surf.mtilea);
563 struct eg_surface surf;
571 surf.nbx = (pitch + 1) * 8;
572 surf.nby = ((slice + 1) * 64) / surf.nbx;
573 surf.mode = G_028040_ARRAY_MODE(track->db_z_info);
574 surf.format = G_028044_FORMAT(track->db_s_info);
575 surf.tsplit = G_028044_TILE_SPLIT(track->db_s_info);
576 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info);
577 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info);
578 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info);
579 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info);
580 surf.nsamples = 1;
582 if (surf.format != 1) {
584 __func__, __LINE__, surf.format);
588 surf.format = V_028C70_COLOR_8;
590 r = evergreen_surface_value_conv_check(p, &surf, "stencil");
595 r = evergreen_surface_check(p, &surf, NULL);
601 surf.format = V_028C70_COLOR_8_8_8_8;
602 r = evergreen_surface_check(p, &surf, "stencil");
612 if (offset & (surf.base_align - 1)) {
614 __func__, __LINE__, offset, surf.base_align);
617 offset += (u64)surf.layer_size * mslice;
621 __func__, __LINE__, surf.layer_size,
631 if (offset & (surf.base_align - 1)) {
633 __func__, __LINE__, offset, surf.base_align);
636 offset += (u64)surf.layer_size * mslice;
640 __func__, __LINE__, surf.layer_size,
648 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby);
660 struct eg_surface surf;
668 surf.nbx = (pitch + 1) * 8;
669 surf.nby = ((slice + 1) * 64) / surf.nbx;
670 surf.mode = G_028040_ARRAY_MODE(track->db_z_info);
671 surf.format = G_028040_FORMAT(track->db_z_info);
672 surf.tsplit = G_028040_TILE_SPLIT(track->db_z_info);
673 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info);
674 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info);
675 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info);
676 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info);
677 surf.nsamples = 1;
679 switch (surf.format) {
681 surf.format = V_028C70_COLOR_16;
685 surf.format = V_028C70_COLOR_8_8_8_8;
689 __func__, __LINE__, surf.format);
693 r = evergreen_surface_value_conv_check(p, &surf, "depth");
701 r = evergreen_surface_check(p, &surf, "depth");
710 if (offset & (surf.base_align - 1)) {
712 __func__, __LINE__, offset, surf.base_align);
715 offset += (u64)surf.layer_size * mslice;
719 __func__, __LINE__, surf.layer_size,
726 if (offset & (surf.base_align - 1)) {
728 __func__, __LINE__, offset, surf.base_align);
731 offset += (u64)surf.layer_size * mslice;
735 __func__, __LINE__, surf.layer_size,
743 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby);
757 struct eg_surface surf;
777 surf.format = G_03001C_DATA_FORMAT(texdw[7]);
778 surf.nbx = (G_030000_PITCH(texdw[0]) + 1) * 8;
779 surf.nbx = r600_fmt_get_nblocksx(surf.format, surf.nbx);
780 surf.nby = r600_fmt_get_nblocksy(surf.format, height);
781 surf.mode = G_030004_ARRAY_MODE(texdw[1]);
782 surf.tsplit = G_030018_TILE_SPLIT(texdw[6]);
783 surf.nbanks = G_03001C_NUM_BANKS(texdw[7]);
784 surf.bankw = G_03001C_BANK_WIDTH(texdw[7]);
785 surf.bankh = G_03001C_BANK_HEIGHT(texdw[7]);
786 surf.mtilea = G_03001C_MACRO_TILE_ASPECT(texdw[7]);
787 surf.nsamples = 1;
791 if (!r600_fmt_is_valid_texture(surf.format, p->family)) {
793 __func__, __LINE__, surf.format);
806 surf.nsamples = 1 << llevel;
818 r = evergreen_surface_value_conv_check(p, &surf, "texture");
824 evergreen_surface_check(p, &surf, NULL);
825 surf.nby = ALIGN(surf.nby, surf.halign);
827 r = evergreen_surface_check(p, &surf, "texture");
836 if (toffset & (surf.base_align - 1)) {
838 __func__, __LINE__, toffset, surf.base_align);
841 if (surf.nsamples <= 1 && moffset & (surf.base_align - 1)) {
843 __func__, __LINE__, moffset, surf.base_align);
847 toffset += surf.layer_size * depth;
849 toffset += surf.layer_size * mslice;
854 __func__, __LINE__, surf.layer_size,
857 surf.nbx, surf.nby);
878 surf.nbx = r600_fmt_get_nblocksx(surf.format, w);
879 surf.nby = r600_fmt_get_nblocksy(surf.format, h);
881 switch (surf.mode) {
883 if (surf.nbx < surf.palign || surf.nby < surf.halign) {
884 surf.mode = ARRAY_1D_TILED_THIN1;
887 evergreen_surface_check(p, &surf, NULL);
895 __func__, __LINE__, surf.mode);
898 surf.nbx = ALIGN(surf.nbx, surf.palign);
899 surf.nby = ALIGN(surf.nby, surf.halign);
901 r = evergreen_surface_check(p, &surf, "mipmap");
907 moffset += surf.layer_size * d;
909 moffset += surf.layer_size * mslice;
915 __func__, __LINE__, i, surf.layer_size,
919 dev_warn(p->dev, "%s:%d problematic surf: (%d %d) (%d %d %d %d %d %d %d)\n",
920 __func__, __LINE__, surf.nbx, surf.nby,
921 surf.mode, surf.bpe, surf.nsamples,
922 surf.bankw, surf.bankh,
923 surf.tsplit, surf.mtilea);