mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 12:40:09 +01:00
i965: Fix issues with number of VS URB entries on Cherryview/Broxton.
Cherryview/Broxton annoyingly have a minimum number of VS URB entries of 34, which is not a multiple of 8. When the VS size is less than 9, the number of VS entries has to be a multiple of 8. Notably, BLORP programmed the minimum number of VS URB entries (34), with a size of 1 (less than 9), which is invalid. It seemed like this could be a problem in the regular URB code as well, so I went ahead and updated that to be safe. Cc: "12.0" <mesa-stable@lists.freedesktop.org> Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
b010fa8567
commit
9f37df06da
2 changed files with 5 additions and 2 deletions
|
|
@ -67,8 +67,9 @@ gen7_blorp_emit_urb_config(struct brw_context *brw)
|
|||
push_constant_bytes / chunk_size_bytes;
|
||||
const unsigned vs_size = 1;
|
||||
const unsigned vs_start = push_constant_chunks;
|
||||
const unsigned min_vs_entries = ALIGN(brw->urb.min_vs_entries, 8);
|
||||
const unsigned vs_chunks =
|
||||
DIV_ROUND_UP(brw->urb.min_vs_entries * vs_size * 64, chunk_size_bytes);
|
||||
DIV_ROUND_UP(min_vs_entries * vs_size * 64, chunk_size_bytes);
|
||||
|
||||
if (gen7_blorp_skip_urb_config(brw))
|
||||
return;
|
||||
|
|
@ -83,7 +84,7 @@ gen7_blorp_emit_urb_config(struct brw_context *brw)
|
|||
urb_size / 2 /* fs_size */);
|
||||
|
||||
gen7_emit_urb_state(brw,
|
||||
brw->urb.min_vs_entries /* num_vs_entries */,
|
||||
min_vs_entries /* num_vs_entries */,
|
||||
vs_size,
|
||||
vs_start,
|
||||
0 /* num_hs_entries */,
|
||||
|
|
|
|||
|
|
@ -234,6 +234,8 @@ gen7_upload_urb(struct brw_context *brw)
|
|||
*/
|
||||
unsigned vs_min_entries =
|
||||
tess_present && brw->gen == 8 ? 192 : brw->urb.min_vs_entries;
|
||||
/* Min VS Entries isn't a multiple of 8 on Cherryview/Broxton; round up */
|
||||
vs_min_entries = ALIGN(vs_min_entries, vs_granularity);
|
||||
|
||||
unsigned vs_chunks =
|
||||
DIV_ROUND_UP(vs_min_entries * vs_entry_size_bytes, chunk_size_bytes);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue