Lines Matching refs:urb

688    ice->urb.vs_start = 0;
689 ice->urb.gs_start = ice->urb.nr_vs_entries * ice->urb.vsize;
690 ice->urb.clip_start = ice->urb.gs_start + ice->urb.nr_gs_entries * ice->urb.vsize;
691 ice->urb.sf_start = ice->urb.clip_start + ice->urb.nr_clip_entries * ice->urb.vsize;
692 ice->urb.cs_start = ice->urb.sf_start + ice->urb.nr_sf_entries * ice->urb.sfsize;
694 return ice->urb.cs_start + ice->urb.nr_cs_entries *
695 ice->urb.csize <= ice->urb.size;
713 if (ice->urb.vsize < vsize ||
714 ice->urb.sfsize < sfsize ||
715 ice->urb.csize < csize ||
716 (ice->urb.constrained && (ice->urb.vsize > vsize ||
717 ice->urb.sfsize > sfsize ||
718 ice->urb.csize > csize))) {
721 ice->urb.csize = csize;
722 ice->urb.sfsize = sfsize;
723 ice->urb.vsize = vsize;
725 ice->urb.nr_vs_entries = limits[URB_VS].preferred_nr_entries;
726 ice->urb.nr_gs_entries = limits[URB_GS].preferred_nr_entries;
727 ice->urb.nr_clip_entries = limits[URB_CLP].preferred_nr_entries;
728 ice->urb.nr_sf_entries = limits[URB_SF].preferred_nr_entries;
729 ice->urb.nr_cs_entries = limits[URB_CS].preferred_nr_entries;
731 ice->urb.constrained = 0;
734 ice->urb.nr_vs_entries = 128;
735 ice->urb.nr_sf_entries = 48;
739 ice->urb.constrained = 1;
740 ice->urb.nr_vs_entries = limits[URB_VS].preferred_nr_entries;
741 ice->urb.nr_sf_entries = limits[URB_SF].preferred_nr_entries;
744 ice->urb.nr_vs_entries = 64;
748 ice->urb.constrained = 1;
749 ice->urb.nr_vs_entries = limits[URB_VS].preferred_nr_entries;
754 ice->urb.nr_vs_entries = limits[URB_VS].min_nr_entries;
755 ice->urb.nr_gs_entries = limits[URB_GS].min_nr_entries;
756 ice->urb.nr_clip_entries = limits[URB_CLP].min_nr_entries;
757 ice->urb.nr_sf_entries = limits[URB_SF].min_nr_entries;
758 ice->urb.nr_cs_entries = limits[URB_CS].min_nr_entries;
764 ice->urb.constrained = 1;
767 /* This is impossible, given the maximal sizes of urb
783 ice->urb.vs_start,
784 ice->urb.gs_start,
785 ice->urb.clip_start,
786 ice->urb.sf_start,
787 ice->urb.cs_start,
788 ice->urb.size);
798 _crocus_pack_command(batch, GENX(URB_FENCE), urb_fence, urb) {
799 urb.VSUnitURBReallocationRequest = 1;
800 urb.GSUnitURBReallocationRequest = 1;
801 urb.CLIPUnitURBReallocationRequest = 1;
802 urb.SFUnitURBReallocationRequest = 1;
803 urb.VFEUnitURBReallocationRequest = 1;
804 urb.CSUnitURBReallocationRequest = 1;
806 urb.VSFence = batch->ice->urb.gs_start;
807 urb.GSFence = batch->ice->urb.clip_start;
808 urb.CLIPFence = batch->ice->urb.sf_start;
809 urb.SFFence = batch->ice->urb.cs_start;
810 urb.CSFence = batch->ice->urb.size;
6080 if (ice->urb.vsize == entry_size[MESA_SHADER_VERTEX] &&
6081 ice->urb.gs_present == gs_present &&
6082 ice->urb.gsize == entry_size[MESA_SHADER_GEOMETRY] &&
6083 ice->urb.tess_present == tess_present &&
6084 ice->urb.hsize == entry_size[MESA_SHADER_TESS_CTRL] &&
6085 ice->urb.dsize == entry_size[MESA_SHADER_TESS_EVAL]) {
6090 ice->urb.vsize = entry_size[MESA_SHADER_VERTEX];
6091 ice->urb.gs_present = gs_present;
6092 ice->urb.gsize = entry_size[MESA_SHADER_GEOMETRY];
6093 ice->urb.tess_present = tess_present;
6094 ice->urb.hsize = entry_size[MESA_SHADER_TESS_CTRL];
6095 ice->urb.dsize = entry_size[MESA_SHADER_TESS_EVAL];
6112 crocus_emit_cmd(batch, GENX(3DSTATE_URB_VS), urb) {
6113 urb._3DCommandSubOpcode += i;
6114 urb.VSURBStartingAddress = start[i];
6115 urb.VSURBEntryAllocationSize = entry_size[i] - 1;
6116 urb.VSNumberofURBEntries = entries[i];
6663 clip.NumberofURBEntries = batch->ice->urb.nr_clip_entries;
6664 clip.URBEntryAllocationSize = batch->ice->urb.vsize - 1;
6666 if (batch->ice->urb.nr_clip_entries >= 10) {
6670 assert(batch->ice->urb.nr_clip_entries % 2 == 0);
6677 assert(batch->ice->urb.nr_clip_entries >= 5);
6779 vs.NumberofURBEntries = batch->ice->urb.nr_vs_entries >> (GFX_VER == 5 ? 2 : 0);
6780 vs.URBEntryAllocationSize = batch->ice->urb.vsize - 1;
6783 CLAMP(batch->ice->urb.nr_vs_entries / 2, 1, batch->screen->devinfo.max_vs_threads) - 1;
6955 gs.NumberofURBEntries = batch->ice->urb.nr_gs_entries;
6956 gs.URBEntryAllocationSize = batch->ice->urb.vsize - 1;
6957 gs.MaximumNumberofThreads = batch->ice->urb.nr_gs_entries >= 8 ? 1 : 0;
7062 sf.URBEntryAllocationSize = batch->ice->urb.sfsize - 1;
7063 sf.NumberofURBEntries = batch->ice->urb.nr_sf_entries;
7069 MIN2(GFX_VER == 5 ? 48 : 24, batch->ice->urb.nr_sf_entries) - 1;
7565 cs.NumberofURBEntries = ice->urb.nr_cs_entries;
7566 cs.URBEntryAllocationSize = ice->urb.csize - 1;
8920 int total_urb_size = ice->urb.size * 1024; /* in bytes */
8933 if (nr_vs_entries > devinfo->urb.max_entries[MESA_SHADER_VERTEX])
8934 nr_vs_entries = devinfo->urb.max_entries[MESA_SHADER_VERTEX];
8936 if (nr_gs_entries > devinfo->urb.max_entries[MESA_SHADER_GEOMETRY])
8937 nr_gs_entries = devinfo->urb.max_entries[MESA_SHADER_GEOMETRY];
8940 ice->urb.nr_vs_entries = ROUND_DOWN_TO(nr_vs_entries, 4);
8941 ice->urb.nr_gs_entries = ROUND_DOWN_TO(nr_gs_entries, 4);
8943 assert(ice->urb.nr_vs_entries >=
8944 devinfo->urb.min_entries[MESA_SHADER_VERTEX]);
8945 assert(ice->urb.nr_vs_entries % 4 == 0);
8946 assert(ice->urb.nr_gs_entries % 4 == 0);
8950 crocus_emit_cmd(batch, GENX(3DSTATE_URB), urb) {
8951 urb.VSNumberofURBEntries = ice->urb.nr_vs_entries;
8952 urb.VSURBEntryAllocationSize = vs_size - 1;
8954 urb.GSNumberofURBEntries = ice->urb.nr_gs_entries;
8955 urb.GSURBEntryAllocationSize = gs_size - 1;
8959 * Because of a urb corruption caused by allocating a previous gsunit’s
8960 * urb entry to vsunit software is required to send a "GS NULL
8969 if (ice->urb.gs_present && !gs_present)
8971 ice->urb.gs_present = gs_present;