Lines Matching refs:surf

192 					  struct eg_surface *surf,  in evergreen_surface_check_linear()  argument
195 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples; in evergreen_surface_check_linear()
196 surf->base_align = surf->bpe; in evergreen_surface_check_linear()
197 surf->palign = 1; in evergreen_surface_check_linear()
198 surf->halign = 1; in evergreen_surface_check_linear()
203 struct eg_surface *surf, in evergreen_surface_check_linear_aligned() argument
209 palign = MAX(64, track->group_size / surf->bpe); in evergreen_surface_check_linear_aligned()
210 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples; in evergreen_surface_check_linear_aligned()
211 surf->base_align = track->group_size; in evergreen_surface_check_linear_aligned()
212 surf->palign = palign; in evergreen_surface_check_linear_aligned()
213 surf->halign = 1; in evergreen_surface_check_linear_aligned()
214 if (surf->nbx & (palign - 1)) { in evergreen_surface_check_linear_aligned()
217 __func__, __LINE__, prefix, surf->nbx, palign); in evergreen_surface_check_linear_aligned()
225 struct eg_surface *surf, in evergreen_surface_check_1d() argument
231 palign = track->group_size / (8 * surf->bpe * surf->nsamples); in evergreen_surface_check_1d()
233 surf->layer_size = surf->nbx * surf->nby * surf->bpe; in evergreen_surface_check_1d()
234 surf->base_align = track->group_size; in evergreen_surface_check_1d()
235 surf->palign = palign; in evergreen_surface_check_1d()
236 surf->halign = 8; in evergreen_surface_check_1d()
237 if ((surf->nbx & (palign - 1))) { in evergreen_surface_check_1d()
240 __func__, __LINE__, prefix, surf->nbx, palign, in evergreen_surface_check_1d()
241 track->group_size, surf->bpe, surf->nsamples); in evergreen_surface_check_1d()
245 if ((surf->nby & (8 - 1))) { in evergreen_surface_check_1d()
248 __func__, __LINE__, prefix, surf->nby); in evergreen_surface_check_1d()
256 struct eg_surface *surf, in evergreen_surface_check_2d() argument
263 tileb = 64 * surf->bpe * surf->nsamples; in evergreen_surface_check_2d()
265 if (tileb > surf->tsplit) { in evergreen_surface_check_2d()
266 slice_pt = tileb / surf->tsplit; in evergreen_surface_check_2d()
270 palign = (8 * surf->bankw * track->npipes) * surf->mtilea; in evergreen_surface_check_2d()
271 halign = (8 * surf->bankh * surf->nbanks) / surf->mtilea; in evergreen_surface_check_2d()
273 mtile_pr = surf->nbx / palign; in evergreen_surface_check_2d()
274 mtile_ps = (mtile_pr * surf->nby) / halign; in evergreen_surface_check_2d()
275 surf->layer_size = mtile_ps * mtileb * slice_pt; in evergreen_surface_check_2d()
276 surf->base_align = (palign / 8) * (halign / 8) * tileb; in evergreen_surface_check_2d()
277 surf->palign = palign; in evergreen_surface_check_2d()
278 surf->halign = halign; in evergreen_surface_check_2d()
280 if ((surf->nbx & (palign - 1))) { in evergreen_surface_check_2d()
283 __func__, __LINE__, prefix, surf->nbx, palign); in evergreen_surface_check_2d()
287 if ((surf->nby & (halign - 1))) { in evergreen_surface_check_2d()
290 __func__, __LINE__, prefix, surf->nby, halign); in evergreen_surface_check_2d()
299 struct eg_surface *surf, in evergreen_surface_check() argument
303 surf->bpe = r600_fmt_get_blocksize(surf->format); in evergreen_surface_check()
305 switch (surf->mode) { in evergreen_surface_check()
307 return evergreen_surface_check_linear(p, surf, prefix); in evergreen_surface_check()
309 return evergreen_surface_check_linear_aligned(p, surf, prefix); in evergreen_surface_check()
311 return evergreen_surface_check_1d(p, surf, prefix); in evergreen_surface_check()
313 return evergreen_surface_check_2d(p, surf, prefix); in evergreen_surface_check()
316 __func__, __LINE__, prefix, surf->mode); in evergreen_surface_check()
323 struct eg_surface *surf, in evergreen_surface_value_conv_check() argument
326 switch (surf->mode) { in evergreen_surface_value_conv_check()
335 __func__, __LINE__, prefix, surf->mode); in evergreen_surface_value_conv_check()
339 switch (surf->nbanks) { in evergreen_surface_value_conv_check()
340 case 0: surf->nbanks = 2; break; in evergreen_surface_value_conv_check()
341 case 1: surf->nbanks = 4; break; in evergreen_surface_value_conv_check()
342 case 2: surf->nbanks = 8; break; in evergreen_surface_value_conv_check()
343 case 3: surf->nbanks = 16; break; in evergreen_surface_value_conv_check()
346 __func__, __LINE__, prefix, surf->nbanks); in evergreen_surface_value_conv_check()
349 switch (surf->bankw) { in evergreen_surface_value_conv_check()
350 case 0: surf->bankw = 1; break; in evergreen_surface_value_conv_check()
351 case 1: surf->bankw = 2; break; in evergreen_surface_value_conv_check()
352 case 2: surf->bankw = 4; break; in evergreen_surface_value_conv_check()
353 case 3: surf->bankw = 8; break; in evergreen_surface_value_conv_check()
356 __func__, __LINE__, prefix, surf->bankw); in evergreen_surface_value_conv_check()
359 switch (surf->bankh) { in evergreen_surface_value_conv_check()
360 case 0: surf->bankh = 1; break; in evergreen_surface_value_conv_check()
361 case 1: surf->bankh = 2; break; in evergreen_surface_value_conv_check()
362 case 2: surf->bankh = 4; break; in evergreen_surface_value_conv_check()
363 case 3: surf->bankh = 8; break; in evergreen_surface_value_conv_check()
366 __func__, __LINE__, prefix, surf->bankh); in evergreen_surface_value_conv_check()
369 switch (surf->mtilea) { in evergreen_surface_value_conv_check()
370 case 0: surf->mtilea = 1; break; in evergreen_surface_value_conv_check()
371 case 1: surf->mtilea = 2; break; in evergreen_surface_value_conv_check()
372 case 2: surf->mtilea = 4; break; in evergreen_surface_value_conv_check()
373 case 3: surf->mtilea = 8; break; in evergreen_surface_value_conv_check()
376 __func__, __LINE__, prefix, surf->mtilea); in evergreen_surface_value_conv_check()
379 switch (surf->tsplit) { in evergreen_surface_value_conv_check()
380 case 0: surf->tsplit = 64; break; in evergreen_surface_value_conv_check()
381 case 1: surf->tsplit = 128; break; in evergreen_surface_value_conv_check()
382 case 2: surf->tsplit = 256; break; in evergreen_surface_value_conv_check()
383 case 3: surf->tsplit = 512; break; in evergreen_surface_value_conv_check()
384 case 4: surf->tsplit = 1024; break; in evergreen_surface_value_conv_check()
385 case 5: surf->tsplit = 2048; break; in evergreen_surface_value_conv_check()
386 case 6: surf->tsplit = 4096; break; in evergreen_surface_value_conv_check()
389 __func__, __LINE__, prefix, surf->tsplit); in evergreen_surface_value_conv_check()
398 struct eg_surface surf; in evergreen_cs_track_validate_cb() local
406 surf.nbx = (pitch + 1) * 8; in evergreen_cs_track_validate_cb()
407 surf.nby = ((slice + 1) * 64) / surf.nbx; in evergreen_cs_track_validate_cb()
408 surf.mode = G_028C70_ARRAY_MODE(track->cb_color_info[id]); in evergreen_cs_track_validate_cb()
409 surf.format = G_028C70_FORMAT(track->cb_color_info[id]); in evergreen_cs_track_validate_cb()
410 surf.tsplit = G_028C74_TILE_SPLIT(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
411 surf.nbanks = G_028C74_NUM_BANKS(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
412 surf.bankw = G_028C74_BANK_WIDTH(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
413 surf.bankh = G_028C74_BANK_HEIGHT(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
414 surf.mtilea = G_028C74_MACRO_TILE_ASPECT(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
415 surf.nsamples = 1; in evergreen_cs_track_validate_cb()
417 if (!r600_fmt_is_valid_color(surf.format)) { in evergreen_cs_track_validate_cb()
419 __func__, __LINE__, surf.format, in evergreen_cs_track_validate_cb()
424 r = evergreen_surface_value_conv_check(p, &surf, "cb"); in evergreen_cs_track_validate_cb()
429 r = evergreen_surface_check(p, &surf, "cb"); in evergreen_cs_track_validate_cb()
439 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_cb()
441 __func__, __LINE__, id, offset, surf.base_align); in evergreen_cs_track_validate_cb()
445 offset += (u64)surf.layer_size * mslice; in evergreen_cs_track_validate_cb()
451 if (!surf.mode) { in evergreen_cs_track_validate_cb()
456 if (surf.nby > 8) { in evergreen_cs_track_validate_cb()
457 min = surf.nby - 8; in evergreen_cs_track_validate_cb()
461 for (nby = surf.nby; nby > min; nby--) { in evergreen_cs_track_validate_cb()
462 size = nby * surf.nbx * surf.bpe * surf.nsamples; in evergreen_cs_track_validate_cb()
468 surf.nby = nby; in evergreen_cs_track_validate_cb()
469 slice = ((nby * surf.nbx) / 64) - 1; in evergreen_cs_track_validate_cb()
470 if (!evergreen_surface_check(p, &surf, "cb")) { in evergreen_cs_track_validate_cb()
472 tmp += (u64)surf.layer_size * mslice; in evergreen_cs_track_validate_cb()
482 __func__, __LINE__, id, surf.layer_size, in evergreen_cs_track_validate_cb()
486 __func__, __LINE__, surf.nbx, surf.nby, in evergreen_cs_track_validate_cb()
487 surf.mode, surf.bpe, surf.nsamples, in evergreen_cs_track_validate_cb()
488 surf.bankw, surf.bankh, in evergreen_cs_track_validate_cb()
489 surf.tsplit, surf.mtilea); in evergreen_cs_track_validate_cb()
565 struct eg_surface surf; in evergreen_cs_track_validate_stencil() local
573 surf.nbx = (pitch + 1) * 8; in evergreen_cs_track_validate_stencil()
574 surf.nby = ((slice + 1) * 64) / surf.nbx; in evergreen_cs_track_validate_stencil()
575 surf.mode = G_028040_ARRAY_MODE(track->db_z_info); in evergreen_cs_track_validate_stencil()
576 surf.format = G_028044_FORMAT(track->db_s_info); in evergreen_cs_track_validate_stencil()
577 surf.tsplit = G_028044_TILE_SPLIT(track->db_s_info); in evergreen_cs_track_validate_stencil()
578 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info); in evergreen_cs_track_validate_stencil()
579 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info); in evergreen_cs_track_validate_stencil()
580 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info); in evergreen_cs_track_validate_stencil()
581 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info); in evergreen_cs_track_validate_stencil()
582 surf.nsamples = 1; in evergreen_cs_track_validate_stencil()
584 if (surf.format != 1) { in evergreen_cs_track_validate_stencil()
586 __func__, __LINE__, surf.format); in evergreen_cs_track_validate_stencil()
590 surf.format = V_028C70_COLOR_8; in evergreen_cs_track_validate_stencil()
592 r = evergreen_surface_value_conv_check(p, &surf, "stencil"); in evergreen_cs_track_validate_stencil()
597 r = evergreen_surface_check(p, &surf, NULL); in evergreen_cs_track_validate_stencil()
603 surf.format = V_028C70_COLOR_8_8_8_8; in evergreen_cs_track_validate_stencil()
604 r = evergreen_surface_check(p, &surf, "stencil"); in evergreen_cs_track_validate_stencil()
614 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_stencil()
616 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_stencil()
619 offset += (u64)surf.layer_size * mslice; in evergreen_cs_track_validate_stencil()
623 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_stencil()
633 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_stencil()
635 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_stencil()
638 offset += (u64)surf.layer_size * mslice; in evergreen_cs_track_validate_stencil()
642 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_stencil()
650 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby); in evergreen_cs_track_validate_stencil()
662 struct eg_surface surf; in evergreen_cs_track_validate_depth() local
670 surf.nbx = (pitch + 1) * 8; in evergreen_cs_track_validate_depth()
671 surf.nby = ((slice + 1) * 64) / surf.nbx; in evergreen_cs_track_validate_depth()
672 surf.mode = G_028040_ARRAY_MODE(track->db_z_info); in evergreen_cs_track_validate_depth()
673 surf.format = G_028040_FORMAT(track->db_z_info); in evergreen_cs_track_validate_depth()
674 surf.tsplit = G_028040_TILE_SPLIT(track->db_z_info); in evergreen_cs_track_validate_depth()
675 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info); in evergreen_cs_track_validate_depth()
676 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info); in evergreen_cs_track_validate_depth()
677 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info); in evergreen_cs_track_validate_depth()
678 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info); in evergreen_cs_track_validate_depth()
679 surf.nsamples = 1; in evergreen_cs_track_validate_depth()
681 switch (surf.format) { in evergreen_cs_track_validate_depth()
683 surf.format = V_028C70_COLOR_16; in evergreen_cs_track_validate_depth()
687 surf.format = V_028C70_COLOR_8_8_8_8; in evergreen_cs_track_validate_depth()
691 __func__, __LINE__, surf.format); in evergreen_cs_track_validate_depth()
695 r = evergreen_surface_value_conv_check(p, &surf, "depth"); in evergreen_cs_track_validate_depth()
703 r = evergreen_surface_check(p, &surf, "depth"); in evergreen_cs_track_validate_depth()
712 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_depth()
714 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_depth()
717 offset += (u64)surf.layer_size * mslice; in evergreen_cs_track_validate_depth()
721 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_depth()
728 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_depth()
730 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_depth()
733 offset += (u64)surf.layer_size * mslice; in evergreen_cs_track_validate_depth()
737 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_depth()
745 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby); in evergreen_cs_track_validate_depth()
759 struct eg_surface surf; in evergreen_cs_track_validate_texture() local
779 surf.format = G_03001C_DATA_FORMAT(texdw[7]); in evergreen_cs_track_validate_texture()
780 surf.nbx = (G_030000_PITCH(texdw[0]) + 1) * 8; in evergreen_cs_track_validate_texture()
781 surf.nbx = r600_fmt_get_nblocksx(surf.format, surf.nbx); in evergreen_cs_track_validate_texture()
782 surf.nby = r600_fmt_get_nblocksy(surf.format, height); in evergreen_cs_track_validate_texture()
783 surf.mode = G_030004_ARRAY_MODE(texdw[1]); in evergreen_cs_track_validate_texture()
784 surf.tsplit = G_030018_TILE_SPLIT(texdw[6]); in evergreen_cs_track_validate_texture()
785 surf.nbanks = G_03001C_NUM_BANKS(texdw[7]); in evergreen_cs_track_validate_texture()
786 surf.bankw = G_03001C_BANK_WIDTH(texdw[7]); in evergreen_cs_track_validate_texture()
787 surf.bankh = G_03001C_BANK_HEIGHT(texdw[7]); in evergreen_cs_track_validate_texture()
788 surf.mtilea = G_03001C_MACRO_TILE_ASPECT(texdw[7]); in evergreen_cs_track_validate_texture()
789 surf.nsamples = 1; in evergreen_cs_track_validate_texture()
793 if (!r600_fmt_is_valid_texture(surf.format, p->family)) { in evergreen_cs_track_validate_texture()
795 __func__, __LINE__, surf.format); in evergreen_cs_track_validate_texture()
808 surf.nsamples = 1 << llevel; in evergreen_cs_track_validate_texture()
820 r = evergreen_surface_value_conv_check(p, &surf, "texture"); in evergreen_cs_track_validate_texture()
826 evergreen_surface_check(p, &surf, NULL); in evergreen_cs_track_validate_texture()
827 surf.nby = ALIGN(surf.nby, surf.halign); in evergreen_cs_track_validate_texture()
829 r = evergreen_surface_check(p, &surf, "texture"); in evergreen_cs_track_validate_texture()
838 if (toffset & (surf.base_align - 1)) { in evergreen_cs_track_validate_texture()
840 __func__, __LINE__, toffset, surf.base_align); in evergreen_cs_track_validate_texture()
843 if (surf.nsamples <= 1 && moffset & (surf.base_align - 1)) { in evergreen_cs_track_validate_texture()
845 __func__, __LINE__, moffset, surf.base_align); in evergreen_cs_track_validate_texture()
849 toffset += surf.layer_size * depth; in evergreen_cs_track_validate_texture()
851 toffset += surf.layer_size * mslice; in evergreen_cs_track_validate_texture()
856 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_texture()
859 surf.nbx, surf.nby); in evergreen_cs_track_validate_texture()
880 surf.nbx = r600_fmt_get_nblocksx(surf.format, w); in evergreen_cs_track_validate_texture()
881 surf.nby = r600_fmt_get_nblocksy(surf.format, h); in evergreen_cs_track_validate_texture()
883 switch (surf.mode) { in evergreen_cs_track_validate_texture()
885 if (surf.nbx < surf.palign || surf.nby < surf.halign) { in evergreen_cs_track_validate_texture()
886 surf.mode = ARRAY_1D_TILED_THIN1; in evergreen_cs_track_validate_texture()
889 evergreen_surface_check(p, &surf, NULL); in evergreen_cs_track_validate_texture()
897 __func__, __LINE__, surf.mode); in evergreen_cs_track_validate_texture()
900 surf.nbx = ALIGN(surf.nbx, surf.palign); in evergreen_cs_track_validate_texture()
901 surf.nby = ALIGN(surf.nby, surf.halign); in evergreen_cs_track_validate_texture()
903 r = evergreen_surface_check(p, &surf, "mipmap"); in evergreen_cs_track_validate_texture()
909 moffset += surf.layer_size * d; in evergreen_cs_track_validate_texture()
911 moffset += surf.layer_size * mslice; in evergreen_cs_track_validate_texture()
917 __func__, __LINE__, i, surf.layer_size, in evergreen_cs_track_validate_texture()
922 __func__, __LINE__, surf.nbx, surf.nby, in evergreen_cs_track_validate_texture()
923 surf.mode, surf.bpe, surf.nsamples, in evergreen_cs_track_validate_texture()
924 surf.bankw, surf.bankh, in evergreen_cs_track_validate_texture()
925 surf.tsplit, surf.mtilea); in evergreen_cs_track_validate_texture()