From d4a461caaf00ae13b83f106f032d3f4125687a02 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Thu, 15 Jan 2015 02:05:18 -0800 Subject: [PATCH] i965: Fix INTEL_DEBUG=shader_time for SIMD8 VS (and GS). We were incorrectly attributing VS time to FS8 on Gen8+, which now use fs_visitor for vertex shaders. We don't hit this for geometry shaders yet, but we may as well add support now - the fix is obvious, and we'll just forget later. Signed-off-by: Kenneth Graunke Reviewed-by: Francisco Jerez Reviewed-by: Jordan Justen --- src/mesa/drivers/dri/i965/brw_fs.cpp | 34 ++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 2046eba354a..200a494c4c9 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -724,15 +724,31 @@ fs_visitor::emit_shader_time_end() current_annotation = "shader time end"; enum shader_time_shader_type type, written_type, reset_type; - if (dispatch_width == 8) { - type = ST_FS8; - written_type = ST_FS8_WRITTEN; - reset_type = ST_FS8_RESET; - } else { - assert(dispatch_width == 16); - type = ST_FS16; - written_type = ST_FS16_WRITTEN; - reset_type = ST_FS16_RESET; + switch (stage) { + case MESA_SHADER_VERTEX: + type = ST_VS; + written_type = ST_VS_WRITTEN; + reset_type = ST_VS_RESET; + break; + case MESA_SHADER_GEOMETRY: + type = ST_GS; + written_type = ST_GS_WRITTEN; + reset_type = ST_GS_RESET; + break; + case MESA_SHADER_FRAGMENT: + if (dispatch_width == 8) { + type = ST_FS8; + written_type = ST_FS8_WRITTEN; + reset_type = ST_FS8_RESET; + } else { + assert(dispatch_width == 16); + type = ST_FS16; + written_type = ST_FS16_WRITTEN; + reset_type = ST_FS16_RESET; + } + break; + default: + unreachable("fs_visitor::emit_shader_time_end missing code"); } fs_reg shader_end_time = get_timestamp(); -- 2.30.2