diff options
author | Kenneth Graunke <[email protected]> | 2015-01-15 02:05:18 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2015-02-05 20:01:03 -0800 |
commit | d4a461caaf00ae13b83f106f032d3f4125687a02 (patch) | |
tree | 4d429ae51ee7225ece77e249563ffead701dacc5 /src/mesa | |
parent | 32f1d4e2869fbbac28e9a289fd7a12ee4746071a (diff) |
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 <[email protected]>
Reviewed-by: Francisco Jerez <[email protected]>
Reviewed-by: Jordan Justen <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.cpp | 34 |
1 files 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(); |