Lines Matching refs:surf

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