OSDN Git Service

i965: Reorganize prog_data->total_scratch code a bit.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 14 Jun 2016 06:09:31 +0000 (23:09 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 21 Jun 2016 17:24:45 +0000 (10:24 -0700)
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/drivers/dri/i965/brw_fs.cpp

index 8f8f3c2..09b0431 100644 (file)
@@ -5976,23 +5976,26 @@ fs_visitor::allocate_registers(bool allow_spilling)
    schedule_instructions(SCHEDULE_POST);
 
    if (last_scratch > 0) {
-      prog_data->total_scratch = brw_get_scratch_size(last_scratch);
+      unsigned max_scratch_size = 2 * 1024 * 1024;
 
-      if (devinfo->is_haswell && stage == MESA_SHADER_COMPUTE) {
-         /* According to the MEDIA_VFE_STATE's "Per Thread Scratch Space"
-          * field documentation, Haswell supports a minimum of 2kB of
-          * scratch space for compute shaders, unlike every other stage
-          * and platform.
-          */
-         prog_data->total_scratch = MAX2(prog_data->total_scratch, 2048);
-      } else if (devinfo->gen <= 7 && stage == MESA_SHADER_COMPUTE) {
-         /* According to the MEDIAVFE_STATE's "Per Thread Scratch Space"
-          * field documentation, platforms prior to Haswell measure scratch
-          * size linearly with a range of [1kB, 12kB] and 1kB granularity.
-          */
-         prog_data->total_scratch = ALIGN(last_scratch, 1024);
+      prog_data->total_scratch = brw_get_scratch_size(last_scratch);
 
-         assert(prog_data->total_scratch < 12 * 1024);
+      if (stage == MESA_SHADER_COMPUTE) {
+         if (devinfo->is_haswell) {
+            /* According to the MEDIA_VFE_STATE's "Per Thread Scratch Space"
+             * field documentation, Haswell supports a minimum of 2kB of
+             * scratch space for compute shaders, unlike every other stage
+             * and platform.
+             */
+            prog_data->total_scratch = MAX2(prog_data->total_scratch, 2048);
+         } else if (devinfo->gen <= 7) {
+            /* According to the MEDIA_VFE_STATE's "Per Thread Scratch Space"
+             * field documentation, platforms prior to Haswell measure scratch
+             * size linearly with a range of [1kB, 12kB] and 1kB granularity.
+             */
+            prog_data->total_scratch = ALIGN(last_scratch, 1024);
+            max_scratch_size = 12 * 1024;
+         }
       }
 
       /* We currently only support up to 2MB of scratch space.  If we
@@ -6005,7 +6008,7 @@ fs_visitor::allocate_registers(bool allow_spilling)
        * See 3D-Media-GPGPU Engine > Media GPGPU Pipeline >
        * Thread Group Tracking > Local Memory/Scratch Space.
        */
-      assert(prog_data->total_scratch < 2 * 1024 * 1024);
+      assert(prog_data->total_scratch < max_scratch_size);
    }
 }