mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-31 00:48:13 +02:00
Potential fix for doom3 lockups. Seems that there is a conflict
between the vertex cache, the vertex shader and the clipping stages, all of which are competitors for URB entries assigned to the VS unit. This change reduces the maximum number of clip and VS threads by enough to ensure that they cannot consume all the available URB entries, and then reduces the number somewhat more up to an arbitary amount I discovered by trial and error. Unfortunately trial and error solutions don't inspire total confidence...
This commit is contained in:
parent
72e810db9d
commit
16a22a5f4a
3 changed files with 7 additions and 6 deletions
|
|
@ -55,10 +55,7 @@ static void upload_clip_unit( struct brw_context *brw )
|
|||
/* BRW_NEW_URB_FENCE */
|
||||
clip.thread4.nr_urb_entries = brw->urb.nr_clip_entries;
|
||||
clip.thread4.urb_entry_allocation_size = brw->urb.vsize - 1;
|
||||
clip.thread4.max_threads = MIN2(brw->urb.nr_clip_entries, 16) - 1;
|
||||
|
||||
if (INTEL_DEBUG & DEBUG_SINGLE_THREAD)
|
||||
clip.thread4.max_threads = 0;
|
||||
clip.thread4.max_threads = 0; /* Hmm, maybe the max is 1 or 2 threads */
|
||||
|
||||
if (INTEL_DEBUG & DEBUG_STATS)
|
||||
clip.thread4.stats_enable = 1;
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ static const struct {
|
|||
GLuint min_entry_size;
|
||||
GLuint max_entry_size;
|
||||
} limits[CS+1] = {
|
||||
{ 8, 16, 1, 5 }, /* vs */
|
||||
{ 8, 24, 1, 5 }, /* vs */
|
||||
{ 4, 8, 1, 5 }, /* gs */
|
||||
{ 6, 12, 1, 5 }, /* clp */
|
||||
{ 1, 8, 1, 12 }, /* sf */
|
||||
|
|
|
|||
|
|
@ -53,7 +53,11 @@ static void upload_vs_unit( struct brw_context *brw )
|
|||
/* BRW_NEW_URB_FENCE */
|
||||
vs.thread4.nr_urb_entries = brw->urb.nr_vs_entries;
|
||||
vs.thread4.urb_entry_allocation_size = brw->urb.vsize - 1;
|
||||
vs.thread4.max_threads = MIN2(brw->urb.nr_vs_entries, 16) - 1;
|
||||
vs.thread4.max_threads = MIN2(
|
||||
MAX2(0, (brw->urb.nr_vs_entries - 6) / 2 - 1),
|
||||
15);
|
||||
|
||||
|
||||
|
||||
if (INTEL_DEBUG & DEBUG_SINGLE_THREAD)
|
||||
vs.thread4.max_threads = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue