Lines Matching refs:surf
187 struct eg_surface *surf, in evergreen_surface_check_linear() argument
190 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples; in evergreen_surface_check_linear()
191 surf->base_align = surf->bpe; in evergreen_surface_check_linear()
192 surf->palign = 1; in evergreen_surface_check_linear()
193 surf->halign = 1; in evergreen_surface_check_linear()
198 struct eg_surface *surf, in evergreen_surface_check_linear_aligned() argument
204 palign = MAX(64, track->group_size / surf->bpe); in evergreen_surface_check_linear_aligned()
205 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples; in evergreen_surface_check_linear_aligned()
206 surf->base_align = track->group_size; in evergreen_surface_check_linear_aligned()
207 surf->palign = palign; in evergreen_surface_check_linear_aligned()
208 surf->halign = 1; in evergreen_surface_check_linear_aligned()
209 if (surf->nbx & (palign - 1)) { in evergreen_surface_check_linear_aligned()
212 __func__, __LINE__, prefix, surf->nbx, palign); in evergreen_surface_check_linear_aligned()
220 struct eg_surface *surf, in evergreen_surface_check_1d() argument
226 palign = track->group_size / (8 * surf->bpe * surf->nsamples); in evergreen_surface_check_1d()
228 surf->layer_size = surf->nbx * surf->nby * surf->bpe; in evergreen_surface_check_1d()
229 surf->base_align = track->group_size; in evergreen_surface_check_1d()
230 surf->palign = palign; in evergreen_surface_check_1d()
231 surf->halign = 8; in evergreen_surface_check_1d()
232 if ((surf->nbx & (palign - 1))) { in evergreen_surface_check_1d()
235 __func__, __LINE__, prefix, surf->nbx, palign, in evergreen_surface_check_1d()
236 track->group_size, surf->bpe, surf->nsamples); in evergreen_surface_check_1d()
240 if ((surf->nby & (8 - 1))) { in evergreen_surface_check_1d()
243 __func__, __LINE__, prefix, surf->nby); in evergreen_surface_check_1d()
251 struct eg_surface *surf, in evergreen_surface_check_2d() argument
258 tileb = 64 * surf->bpe * surf->nsamples; in evergreen_surface_check_2d()
260 if (tileb > surf->tsplit) { in evergreen_surface_check_2d()
261 slice_pt = tileb / surf->tsplit; in evergreen_surface_check_2d()
265 palign = (8 * surf->bankw * track->npipes) * surf->mtilea; in evergreen_surface_check_2d()
266 halign = (8 * surf->bankh * surf->nbanks) / surf->mtilea; in evergreen_surface_check_2d()
268 mtile_pr = surf->nbx / palign; in evergreen_surface_check_2d()
269 mtile_ps = (mtile_pr * surf->nby) / halign; in evergreen_surface_check_2d()
270 surf->layer_size = mtile_ps * mtileb * slice_pt; in evergreen_surface_check_2d()
271 surf->base_align = (palign / 8) * (halign / 8) * tileb; in evergreen_surface_check_2d()
272 surf->palign = palign; in evergreen_surface_check_2d()
273 surf->halign = halign; in evergreen_surface_check_2d()
275 if ((surf->nbx & (palign - 1))) { in evergreen_surface_check_2d()
278 __func__, __LINE__, prefix, surf->nbx, palign); in evergreen_surface_check_2d()
282 if ((surf->nby & (halign - 1))) { in evergreen_surface_check_2d()
285 __func__, __LINE__, prefix, surf->nby, halign); in evergreen_surface_check_2d()
294 struct eg_surface *surf, in evergreen_surface_check() argument
298 surf->bpe = r600_fmt_get_blocksize(surf->format); in evergreen_surface_check()
300 switch (surf->mode) { in evergreen_surface_check()
302 return evergreen_surface_check_linear(p, surf, prefix); in evergreen_surface_check()
304 return evergreen_surface_check_linear_aligned(p, surf, prefix); in evergreen_surface_check()
306 return evergreen_surface_check_1d(p, surf, prefix); in evergreen_surface_check()
308 return evergreen_surface_check_2d(p, surf, prefix); in evergreen_surface_check()
311 __func__, __LINE__, prefix, surf->mode); in evergreen_surface_check()
318 struct eg_surface *surf, in evergreen_surface_value_conv_check() argument
321 switch (surf->mode) { in evergreen_surface_value_conv_check()
330 __func__, __LINE__, prefix, surf->mode); in evergreen_surface_value_conv_check()
334 switch (surf->nbanks) { in evergreen_surface_value_conv_check()
335 case 0: surf->nbanks = 2; break; in evergreen_surface_value_conv_check()
336 case 1: surf->nbanks = 4; break; in evergreen_surface_value_conv_check()
337 case 2: surf->nbanks = 8; break; in evergreen_surface_value_conv_check()
338 case 3: surf->nbanks = 16; break; in evergreen_surface_value_conv_check()
341 __func__, __LINE__, prefix, surf->nbanks); in evergreen_surface_value_conv_check()
344 switch (surf->bankw) { in evergreen_surface_value_conv_check()
345 case 0: surf->bankw = 1; break; in evergreen_surface_value_conv_check()
346 case 1: surf->bankw = 2; break; in evergreen_surface_value_conv_check()
347 case 2: surf->bankw = 4; break; in evergreen_surface_value_conv_check()
348 case 3: surf->bankw = 8; break; in evergreen_surface_value_conv_check()
351 __func__, __LINE__, prefix, surf->bankw); in evergreen_surface_value_conv_check()
354 switch (surf->bankh) { in evergreen_surface_value_conv_check()
355 case 0: surf->bankh = 1; break; in evergreen_surface_value_conv_check()
356 case 1: surf->bankh = 2; break; in evergreen_surface_value_conv_check()
357 case 2: surf->bankh = 4; break; in evergreen_surface_value_conv_check()
358 case 3: surf->bankh = 8; break; in evergreen_surface_value_conv_check()
361 __func__, __LINE__, prefix, surf->bankh); in evergreen_surface_value_conv_check()
364 switch (surf->mtilea) { in evergreen_surface_value_conv_check()
365 case 0: surf->mtilea = 1; break; in evergreen_surface_value_conv_check()
366 case 1: surf->mtilea = 2; break; in evergreen_surface_value_conv_check()
367 case 2: surf->mtilea = 4; break; in evergreen_surface_value_conv_check()
368 case 3: surf->mtilea = 8; break; in evergreen_surface_value_conv_check()
371 __func__, __LINE__, prefix, surf->mtilea); in evergreen_surface_value_conv_check()
374 switch (surf->tsplit) { in evergreen_surface_value_conv_check()
375 case 0: surf->tsplit = 64; break; in evergreen_surface_value_conv_check()
376 case 1: surf->tsplit = 128; break; in evergreen_surface_value_conv_check()
377 case 2: surf->tsplit = 256; break; in evergreen_surface_value_conv_check()
378 case 3: surf->tsplit = 512; break; in evergreen_surface_value_conv_check()
379 case 4: surf->tsplit = 1024; break; in evergreen_surface_value_conv_check()
380 case 5: surf->tsplit = 2048; break; in evergreen_surface_value_conv_check()
381 case 6: surf->tsplit = 4096; break; in evergreen_surface_value_conv_check()
384 __func__, __LINE__, prefix, surf->tsplit); in evergreen_surface_value_conv_check()
393 struct eg_surface surf; in evergreen_cs_track_validate_cb() local
401 surf.nbx = (pitch + 1) * 8; in evergreen_cs_track_validate_cb()
402 surf.nby = ((slice + 1) * 64) / surf.nbx; in evergreen_cs_track_validate_cb()
403 surf.mode = G_028C70_ARRAY_MODE(track->cb_color_info[id]); in evergreen_cs_track_validate_cb()
404 surf.format = G_028C70_FORMAT(track->cb_color_info[id]); in evergreen_cs_track_validate_cb()
405 surf.tsplit = G_028C74_TILE_SPLIT(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
406 surf.nbanks = G_028C74_NUM_BANKS(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
407 surf.bankw = G_028C74_BANK_WIDTH(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
408 surf.bankh = G_028C74_BANK_HEIGHT(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
409 surf.mtilea = G_028C74_MACRO_TILE_ASPECT(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
410 surf.nsamples = 1; in evergreen_cs_track_validate_cb()
412 if (!r600_fmt_is_valid_color(surf.format)) { in evergreen_cs_track_validate_cb()
414 __func__, __LINE__, surf.format, in evergreen_cs_track_validate_cb()
419 r = evergreen_surface_value_conv_check(p, &surf, "cb"); in evergreen_cs_track_validate_cb()
424 r = evergreen_surface_check(p, &surf, "cb"); in evergreen_cs_track_validate_cb()
434 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_cb()
436 __func__, __LINE__, id, offset, surf.base_align); in evergreen_cs_track_validate_cb()
440 offset += surf.layer_size * mslice; in evergreen_cs_track_validate_cb()
446 if (!surf.mode) { in evergreen_cs_track_validate_cb()
451 if (surf.nby > 8) { in evergreen_cs_track_validate_cb()
452 min = surf.nby - 8; in evergreen_cs_track_validate_cb()
456 for (nby = surf.nby; nby > min; nby--) { in evergreen_cs_track_validate_cb()
457 size = nby * surf.nbx * surf.bpe * surf.nsamples; in evergreen_cs_track_validate_cb()
463 surf.nby = nby; in evergreen_cs_track_validate_cb()
464 slice = ((nby * surf.nbx) / 64) - 1; in evergreen_cs_track_validate_cb()
465 if (!evergreen_surface_check(p, &surf, "cb")) { in evergreen_cs_track_validate_cb()
467 tmp += surf.layer_size * mslice; in evergreen_cs_track_validate_cb()
477 __func__, __LINE__, id, surf.layer_size, in evergreen_cs_track_validate_cb()
481 __func__, __LINE__, surf.nbx, surf.nby, in evergreen_cs_track_validate_cb()
482 surf.mode, surf.bpe, surf.nsamples, in evergreen_cs_track_validate_cb()
483 surf.bankw, surf.bankh, in evergreen_cs_track_validate_cb()
484 surf.tsplit, surf.mtilea); in evergreen_cs_track_validate_cb()
560 struct eg_surface surf; in evergreen_cs_track_validate_stencil() local
568 surf.nbx = (pitch + 1) * 8; in evergreen_cs_track_validate_stencil()
569 surf.nby = ((slice + 1) * 64) / surf.nbx; in evergreen_cs_track_validate_stencil()
570 surf.mode = G_028040_ARRAY_MODE(track->db_z_info); in evergreen_cs_track_validate_stencil()
571 surf.format = G_028044_FORMAT(track->db_s_info); in evergreen_cs_track_validate_stencil()
572 surf.tsplit = G_028044_TILE_SPLIT(track->db_s_info); in evergreen_cs_track_validate_stencil()
573 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info); in evergreen_cs_track_validate_stencil()
574 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info); in evergreen_cs_track_validate_stencil()
575 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info); in evergreen_cs_track_validate_stencil()
576 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info); in evergreen_cs_track_validate_stencil()
577 surf.nsamples = 1; in evergreen_cs_track_validate_stencil()
579 if (surf.format != 1) { in evergreen_cs_track_validate_stencil()
581 __func__, __LINE__, surf.format); in evergreen_cs_track_validate_stencil()
585 surf.format = V_028C70_COLOR_8; in evergreen_cs_track_validate_stencil()
587 r = evergreen_surface_value_conv_check(p, &surf, "stencil"); in evergreen_cs_track_validate_stencil()
592 r = evergreen_surface_check(p, &surf, NULL); in evergreen_cs_track_validate_stencil()
598 surf.format = V_028C70_COLOR_8_8_8_8; in evergreen_cs_track_validate_stencil()
599 r = evergreen_surface_check(p, &surf, "stencil"); in evergreen_cs_track_validate_stencil()
609 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_stencil()
611 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_stencil()
614 offset += surf.layer_size * mslice; in evergreen_cs_track_validate_stencil()
618 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_stencil()
628 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_stencil()
630 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_stencil()
633 offset += surf.layer_size * mslice; in evergreen_cs_track_validate_stencil()
637 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_stencil()
645 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby); in evergreen_cs_track_validate_stencil()
657 struct eg_surface surf; in evergreen_cs_track_validate_depth() local
665 surf.nbx = (pitch + 1) * 8; in evergreen_cs_track_validate_depth()
666 surf.nby = ((slice + 1) * 64) / surf.nbx; in evergreen_cs_track_validate_depth()
667 surf.mode = G_028040_ARRAY_MODE(track->db_z_info); in evergreen_cs_track_validate_depth()
668 surf.format = G_028040_FORMAT(track->db_z_info); in evergreen_cs_track_validate_depth()
669 surf.tsplit = G_028040_TILE_SPLIT(track->db_z_info); in evergreen_cs_track_validate_depth()
670 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info); in evergreen_cs_track_validate_depth()
671 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info); in evergreen_cs_track_validate_depth()
672 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info); in evergreen_cs_track_validate_depth()
673 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info); in evergreen_cs_track_validate_depth()
674 surf.nsamples = 1; in evergreen_cs_track_validate_depth()
676 switch (surf.format) { in evergreen_cs_track_validate_depth()
678 surf.format = V_028C70_COLOR_16; in evergreen_cs_track_validate_depth()
682 surf.format = V_028C70_COLOR_8_8_8_8; in evergreen_cs_track_validate_depth()
686 __func__, __LINE__, surf.format); in evergreen_cs_track_validate_depth()
690 r = evergreen_surface_value_conv_check(p, &surf, "depth"); in evergreen_cs_track_validate_depth()
698 r = evergreen_surface_check(p, &surf, "depth"); in evergreen_cs_track_validate_depth()
707 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_depth()
709 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_depth()
712 offset += surf.layer_size * mslice; in evergreen_cs_track_validate_depth()
716 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_depth()
723 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_depth()
725 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_depth()
728 offset += surf.layer_size * mslice; in evergreen_cs_track_validate_depth()
732 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_depth()
740 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby); in evergreen_cs_track_validate_depth()
754 struct eg_surface surf; in evergreen_cs_track_validate_texture() local
774 surf.format = G_03001C_DATA_FORMAT(texdw[7]); in evergreen_cs_track_validate_texture()
775 surf.nbx = (G_030000_PITCH(texdw[0]) + 1) * 8; in evergreen_cs_track_validate_texture()
776 surf.nbx = r600_fmt_get_nblocksx(surf.format, surf.nbx); in evergreen_cs_track_validate_texture()
777 surf.nby = r600_fmt_get_nblocksy(surf.format, height); in evergreen_cs_track_validate_texture()
778 surf.mode = G_030004_ARRAY_MODE(texdw[1]); in evergreen_cs_track_validate_texture()
779 surf.tsplit = G_030018_TILE_SPLIT(texdw[6]); in evergreen_cs_track_validate_texture()
780 surf.nbanks = G_03001C_NUM_BANKS(texdw[7]); in evergreen_cs_track_validate_texture()
781 surf.bankw = G_03001C_BANK_WIDTH(texdw[7]); in evergreen_cs_track_validate_texture()
782 surf.bankh = G_03001C_BANK_HEIGHT(texdw[7]); in evergreen_cs_track_validate_texture()
783 surf.mtilea = G_03001C_MACRO_TILE_ASPECT(texdw[7]); in evergreen_cs_track_validate_texture()
784 surf.nsamples = 1; in evergreen_cs_track_validate_texture()
788 if (!r600_fmt_is_valid_texture(surf.format, p->family)) { in evergreen_cs_track_validate_texture()
790 __func__, __LINE__, surf.format); in evergreen_cs_track_validate_texture()
803 surf.nsamples = 1 << llevel; in evergreen_cs_track_validate_texture()
815 r = evergreen_surface_value_conv_check(p, &surf, "texture"); in evergreen_cs_track_validate_texture()
821 evergreen_surface_check(p, &surf, NULL); in evergreen_cs_track_validate_texture()
822 surf.nby = ALIGN(surf.nby, surf.halign); in evergreen_cs_track_validate_texture()
824 r = evergreen_surface_check(p, &surf, "texture"); in evergreen_cs_track_validate_texture()
833 if (toffset & (surf.base_align - 1)) { in evergreen_cs_track_validate_texture()
835 __func__, __LINE__, toffset, surf.base_align); in evergreen_cs_track_validate_texture()
838 if (surf.nsamples <= 1 && moffset & (surf.base_align - 1)) { in evergreen_cs_track_validate_texture()
840 __func__, __LINE__, moffset, surf.base_align); in evergreen_cs_track_validate_texture()
844 toffset += surf.layer_size * depth; in evergreen_cs_track_validate_texture()
846 toffset += surf.layer_size * mslice; in evergreen_cs_track_validate_texture()
851 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_texture()
854 surf.nbx, surf.nby); in evergreen_cs_track_validate_texture()
875 surf.nbx = r600_fmt_get_nblocksx(surf.format, w); in evergreen_cs_track_validate_texture()
876 surf.nby = r600_fmt_get_nblocksy(surf.format, h); in evergreen_cs_track_validate_texture()
878 switch (surf.mode) { in evergreen_cs_track_validate_texture()
880 if (surf.nbx < surf.palign || surf.nby < surf.halign) { in evergreen_cs_track_validate_texture()
881 surf.mode = ARRAY_1D_TILED_THIN1; in evergreen_cs_track_validate_texture()
884 evergreen_surface_check(p, &surf, NULL); in evergreen_cs_track_validate_texture()
892 __func__, __LINE__, surf.mode); in evergreen_cs_track_validate_texture()
895 surf.nbx = ALIGN(surf.nbx, surf.palign); in evergreen_cs_track_validate_texture()
896 surf.nby = ALIGN(surf.nby, surf.halign); in evergreen_cs_track_validate_texture()
898 r = evergreen_surface_check(p, &surf, "mipmap"); in evergreen_cs_track_validate_texture()
904 moffset += surf.layer_size * d; in evergreen_cs_track_validate_texture()
906 moffset += surf.layer_size * mslice; in evergreen_cs_track_validate_texture()
912 __func__, __LINE__, i, surf.layer_size, in evergreen_cs_track_validate_texture()
917 __func__, __LINE__, surf.nbx, surf.nby, in evergreen_cs_track_validate_texture()
918 surf.mode, surf.bpe, surf.nsamples, in evergreen_cs_track_validate_texture()
919 surf.bankw, surf.bankh, in evergreen_cs_track_validate_texture()
920 surf.tsplit, surf.mtilea); in evergreen_cs_track_validate_texture()