Lines Matching refs:surf

197 					  struct eg_surface *surf,
200 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples;
201 surf->base_align = surf->bpe;
202 surf->palign = 1;
203 surf->halign = 1;
208 struct eg_surface *surf,
214 palign = MAX(64, track->group_size / surf->bpe);
215 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples;
216 surf->base_align = track->group_size;
217 surf->palign = palign;
218 surf->halign = 1;
219 if (surf->nbx & (palign - 1)) {
222 __func__, __LINE__, prefix, surf->nbx, palign);
230 struct eg_surface *surf,
236 palign = track->group_size / (8 * surf->bpe * surf->nsamples);
238 surf->layer_size = surf->nbx * surf->nby * surf->bpe;
239 surf->base_align = track->group_size;
240 surf->palign = palign;
241 surf->halign = 8;
242 if ((surf->nbx & (palign - 1))) {
245 __func__, __LINE__, prefix, surf->nbx, palign,
246 track->group_size, surf->bpe, surf->nsamples);
250 if ((surf->nby & (8 - 1))) {
253 __func__, __LINE__, prefix, surf->nby);
261 struct eg_surface *surf,
268 tileb = 64 * surf->bpe * surf->nsamples;
270 if (tileb > surf->tsplit) {
271 slice_pt = tileb / surf->tsplit;
275 palign = (8 * surf->bankw * track->npipes) * surf->mtilea;
276 halign = (8 * surf->bankh * surf->nbanks) / surf->mtilea;
278 mtile_pr = surf->nbx / palign;
279 mtile_ps = (mtile_pr * surf->nby) / halign;
280 surf->layer_size = mtile_ps * mtileb * slice_pt;
281 surf->base_align = (palign / 8) * (halign / 8) * tileb;
282 surf->palign = palign;
283 surf->halign = halign;
285 if ((surf->nbx & (palign - 1))) {
288 __func__, __LINE__, prefix, surf->nbx, palign);
292 if ((surf->nby & (halign - 1))) {
295 __func__, __LINE__, prefix, surf->nby, halign);
304 struct eg_surface *surf,
308 surf->bpe = r600_fmt_get_blocksize(surf->format);
310 switch (surf->mode) {
312 return evergreen_surface_check_linear(p, surf, prefix);
314 return evergreen_surface_check_linear_aligned(p, surf, prefix);
316 return evergreen_surface_check_1d(p, surf, prefix);
318 return evergreen_surface_check_2d(p, surf, prefix);
321 __func__, __LINE__, prefix, surf->mode);
328 struct eg_surface *surf,
331 switch (surf->mode) {
340 __func__, __LINE__, prefix, surf->mode);
344 switch (surf->nbanks) {
345 case 0: surf->nbanks = 2; break;
346 case 1: surf->nbanks = 4; break;
347 case 2: surf->nbanks = 8; break;
348 case 3: surf->nbanks = 16; break;
351 __func__, __LINE__, prefix, surf->nbanks);
354 switch (surf->bankw) {
355 case 0: surf->bankw = 1; break;
356 case 1: surf->bankw = 2; break;
357 case 2: surf->bankw = 4; break;
358 case 3: surf->bankw = 8; break;
361 __func__, __LINE__, prefix, surf->bankw);
364 switch (surf->bankh) {
365 case 0: surf->bankh = 1; break;
366 case 1: surf->bankh = 2; break;
367 case 2: surf->bankh = 4; break;
368 case 3: surf->bankh = 8; break;
371 __func__, __LINE__, prefix, surf->bankh);
374 switch (surf->mtilea) {
375 case 0: surf->mtilea = 1; break;
376 case 1: surf->mtilea = 2; break;
377 case 2: surf->mtilea = 4; break;
378 case 3: surf->mtilea = 8; break;
381 __func__, __LINE__, prefix, surf->mtilea);
384 switch (surf->tsplit) {
385 case 0: surf->tsplit = 64; break;
386 case 1: surf->tsplit = 128; break;
387 case 2: surf->tsplit = 256; break;
388 case 3: surf->tsplit = 512; break;
389 case 4: surf->tsplit = 1024; break;
390 case 5: surf->tsplit = 2048; break;
391 case 6: surf->tsplit = 4096; break;
394 __func__, __LINE__, prefix, surf->tsplit);
403 struct eg_surface surf;
411 surf.nbx = (pitch + 1) * 8;
412 surf.nby = ((slice + 1) * 64) / surf.nbx;
413 surf.mode = G_028C70_ARRAY_MODE(track->cb_color_info[id]);
414 surf.format = G_028C70_FORMAT(track->cb_color_info[id]);
415 surf.tsplit = G_028C74_TILE_SPLIT(track->cb_color_attrib[id]);
416 surf.nbanks = G_028C74_NUM_BANKS(track->cb_color_attrib[id]);
417 surf.bankw = G_028C74_BANK_WIDTH(track->cb_color_attrib[id]);
418 surf.bankh = G_028C74_BANK_HEIGHT(track->cb_color_attrib[id]);
419 surf.mtilea = G_028C74_MACRO_TILE_ASPECT(track->cb_color_attrib[id]);
420 surf.nsamples = 1;
422 if (!r600_fmt_is_valid_color(surf.format)) {
424 __func__, __LINE__, surf.format,
429 r = evergreen_surface_value_conv_check(p, &surf, "cb");
434 r = evergreen_surface_check(p, &surf, "cb");
444 if (offset & (surf.base_align - 1)) {
446 __func__, __LINE__, id, offset, surf.base_align);
450 offset += surf.layer_size * mslice;
456 if (!surf.mode) {
461 if (surf.nby > 8) {
462 min = surf.nby - 8;
466 for (nby = surf.nby; nby > min; nby--) {
467 size = nby * surf.nbx * surf.bpe * surf.nsamples;
473 surf.nby = nby;
474 slice = ((nby * surf.nbx) / 64) - 1;
475 if (!evergreen_surface_check(p, &surf, "cb")) {
477 tmp += surf.layer_size * mslice;
487 __func__, __LINE__, id, surf.layer_size,
490 dev_warn(p->dev, "%s:%d problematic surf: (%d %d) (%d %d %d %d %d %d %d)\n",
491 __func__, __LINE__, surf.nbx, surf.nby,
492 surf.mode, surf.bpe, surf.nsamples,
493 surf.bankw, surf.bankh,
494 surf.tsplit, surf.mtilea);
570 struct eg_surface surf;
578 surf.nbx = (pitch + 1) * 8;
579 surf.nby = ((slice + 1) * 64) / surf.nbx;
580 surf.mode = G_028040_ARRAY_MODE(track->db_z_info);
581 surf.format = G_028044_FORMAT(track->db_s_info);
582 surf.tsplit = G_028044_TILE_SPLIT(track->db_s_info);
583 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info);
584 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info);
585 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info);
586 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info);
587 surf.nsamples = 1;
589 if (surf.format != 1) {
591 __func__, __LINE__, surf.format);
595 surf.format = V_028C70_COLOR_8;
597 r = evergreen_surface_value_conv_check(p, &surf, "stencil");
602 r = evergreen_surface_check(p, &surf, NULL);
608 surf.format = V_028C70_COLOR_8_8_8_8;
609 r = evergreen_surface_check(p, &surf, "stencil");
619 if (offset & (surf.base_align - 1)) {
621 __func__, __LINE__, offset, surf.base_align);
624 offset += surf.layer_size * mslice;
628 __func__, __LINE__, surf.layer_size,
638 if (offset & (surf.base_align - 1)) {
640 __func__, __LINE__, offset, surf.base_align);
643 offset += surf.layer_size * mslice;
647 __func__, __LINE__, surf.layer_size,
655 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby);
667 struct eg_surface surf;
675 surf.nbx = (pitch + 1) * 8;
676 surf.nby = ((slice + 1) * 64) / surf.nbx;
677 surf.mode = G_028040_ARRAY_MODE(track->db_z_info);
678 surf.format = G_028040_FORMAT(track->db_z_info);
679 surf.tsplit = G_028040_TILE_SPLIT(track->db_z_info);
680 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info);
681 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info);
682 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info);
683 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info);
684 surf.nsamples = 1;
686 switch (surf.format) {
688 surf.format = V_028C70_COLOR_16;
692 surf.format = V_028C70_COLOR_8_8_8_8;
696 __func__, __LINE__, surf.format);
700 r = evergreen_surface_value_conv_check(p, &surf, "depth");
708 r = evergreen_surface_check(p, &surf, "depth");
717 if (offset & (surf.base_align - 1)) {
719 __func__, __LINE__, offset, surf.base_align);
722 offset += surf.layer_size * mslice;
726 __func__, __LINE__, surf.layer_size,
733 if (offset & (surf.base_align - 1)) {
735 __func__, __LINE__, offset, surf.base_align);
738 offset += surf.layer_size * mslice;
742 __func__, __LINE__, surf.layer_size,
750 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby);
764 struct eg_surface surf;
784 surf.format = G_03001C_DATA_FORMAT(texdw[7]);
785 surf.nbx = (G_030000_PITCH(texdw[0]) + 1) * 8;
786 surf.nbx = r600_fmt_get_nblocksx(surf.format, surf.nbx);
787 surf.nby = r600_fmt_get_nblocksy(surf.format, height);
788 surf.mode = G_030004_ARRAY_MODE(texdw[1]);
789 surf.tsplit = G_030018_TILE_SPLIT(texdw[6]);
790 surf.nbanks = G_03001C_NUM_BANKS(texdw[7]);
791 surf.bankw = G_03001C_BANK_WIDTH(texdw[7]);
792 surf.bankh = G_03001C_BANK_HEIGHT(texdw[7]);
793 surf.mtilea = G_03001C_MACRO_TILE_ASPECT(texdw[7]);
794 surf.nsamples = 1;
798 if (!r600_fmt_is_valid_texture(surf.format, p->family)) {
800 __func__, __LINE__, surf.format);
813 surf.nsamples = 1 << llevel;
825 r = evergreen_surface_value_conv_check(p, &surf, "texture");
831 evergreen_surface_check(p, &surf, NULL);
832 surf.nby = roundup(surf.nby, surf.halign);
834 r = evergreen_surface_check(p, &surf, "texture");
843 if (toffset & (surf.base_align - 1)) {
845 __func__, __LINE__, toffset, surf.base_align);
848 if (moffset & (surf.base_align - 1)) {
850 __func__, __LINE__, moffset, surf.base_align);
854 toffset += surf.layer_size * depth;
856 toffset += surf.layer_size * mslice;
861 __func__, __LINE__, surf.layer_size,
864 surf.nbx, surf.nby);
885 surf.nbx = r600_fmt_get_nblocksx(surf.format, w);
886 surf.nby = r600_fmt_get_nblocksy(surf.format, h);
888 switch (surf.mode) {
890 if (surf.nbx < surf.palign || surf.nby < surf.halign) {
891 surf.mode = ARRAY_1D_TILED_THIN1;
894 evergreen_surface_check(p, &surf, NULL);
902 __func__, __LINE__, surf.mode);
905 surf.nbx = roundup(surf.nbx, surf.palign);
906 surf.nby = roundup(surf.nby, surf.halign);
908 r = evergreen_surface_check(p, &surf, "mipmap");
914 moffset += surf.layer_size * d;
916 moffset += surf.layer_size * mslice;
922 __func__, __LINE__, i, surf.layer_size,
926 dev_warn(p->dev, "%s:%d problematic surf: (%d %d) (%d %d %d %d %d %d %d)\n",
927 __func__, __LINE__, surf.nbx, surf.nby,
928 surf.mode, surf.bpe, surf.nsamples,
929 surf.bankw, surf.bankh,
930 surf.tsplit, surf.mtilea);