On 8 April 2013 10:37, Ian Romanick <i...@freedesktop.org> wrote: > On 04/07/2013 06:42 AM, Paul Berry wrote: > >> The call to emit_shader_time_end() before the second URB write was >> conditioned with "if (eot)", but eot is always false in this code >> path, so emit_shader_time_end() was never being called for vertex >> shaders that performed 2 URB writes. >> > > I had to look at that code for way to long to convince myself that your > patch was correct. I think it might be better to remove both the > conditional emit_shader_time_end calls and put this block of code at the > very bottom (unless emit_shader_time_end has some side effect that I don't > see): > > if (inst->eot) { > if (INTEL_DEBUG & DEBUG_SHADER_TIME) > emit_shader_time_end(); > } > > Or does the last URB write have to be the last instruction?
The last URB write has to be the last instruction, since it's actually the URB write that ends the thread ("eot" stands for "end of thread"). For GL 3.2 we're going to need to refactor this function to use a loop, since GL 3.2 doubles the number of varying components permitted for VS->GS linkage (so we'll need up to 4 URB writes instead of 2). I think once that change is made the function is going to be a lot easier to follow. Maybe I should just do that refactor now?
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev