diff options
author | Kevin Rogovin <[email protected]> | 2017-12-12 14:17:26 +0200 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2017-12-12 10:02:31 -0800 |
commit | eea9027f87e42c4ebe9fcf851e189a51557c570f (patch) | |
tree | 369abefd83a6e228953964ecb6da17c3ed1e4e47 /src | |
parent | 7469966ed2ac47de6a40829bd16a1a3e22fdbecf (diff) |
i965: Program MEDIA_VFE_STATE in a more readable fashion.
This patch is purely for readability improvements when programming
the MEDIA_VFE_STATE.
Signed-off-by: Kevin Rogovin <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/genX_state_upload.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c index 04a492539a9..50ac5bc59ff 100644 --- a/src/mesa/drivers/dri/i965/genX_state_upload.c +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c @@ -4183,28 +4183,35 @@ genX(upload_cs_state)(struct brw_context *brw) brw_batch_emit(brw, GENX(MEDIA_VFE_STATE), vfe) { if (prog_data->total_scratch) { - uint32_t bo_offset; + uint32_t per_thread_scratch_value; if (GEN_GEN >= 8) { /* Broadwell's Per Thread Scratch Space is in the range [0, 11] * where 0 = 1k, 1 = 2k, 2 = 4k, ..., 11 = 2M. */ - bo_offset = ffs(stage_state->per_thread_scratch) - 11; + per_thread_scratch_value = ffs(stage_state->per_thread_scratch) - 11; } else if (GEN_IS_HASWELL) { /* Haswell's Per Thread Scratch Space is in the range [0, 10] * where 0 = 2k, 1 = 4k, 2 = 8k, ..., 10 = 2M. */ - bo_offset = ffs(stage_state->per_thread_scratch) - 12; + per_thread_scratch_value = ffs(stage_state->per_thread_scratch) - 12; } else { /* Earlier platforms use the range [0, 11] to mean [1kB, 12kB] * where 0 = 1kB, 1 = 2kB, 2 = 3kB, ..., 11 = 12kB. */ - bo_offset = stage_state->per_thread_scratch / 1024 - 1; + per_thread_scratch_value = stage_state->per_thread_scratch / 1024 - 1; } - vfe.ScratchSpaceBasePointer = - rw_bo(stage_state->scratch_bo, bo_offset); + vfe.ScratchSpaceBasePointer = rw_bo(stage_state->scratch_bo, 0); + vfe.PerThreadScratchSpace = per_thread_scratch_value; } + /* If brw->screen->subslice_total is greater than one, then + * devinfo->max_cs_threads stores number of threads per sub-slice; + * thus we need to multiply by that number by subslices to get + * the actual maximum number of threads; the -1 is because the HW + * has a bias of 1 (would not make sense to say the maximum number + * of threads is 0). + */ const uint32_t subslices = MAX2(brw->screen->subslice_total, 1); vfe.MaximumNumberofThreads = devinfo->max_cs_threads * subslices - 1; vfe.NumberofURBEntries = GEN_GEN >= 8 ? 2 : 0; |