mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 04:50:11 +01:00
i965: Reduce gl_MaxGeometryInputComponents to 64.
Although in principle there is no hardware limitation that prevents gl_MaxGeometryInputComponents from being set to 128 on Gen7, we have the following limitations in the vec4 compiler back end: - Registers assigned to geometry shader inputs can't be spilled or later re-used for any other purpose. - The last 16 registers are set aside for the "MRF hack", meaning they can only be used to send messages, and not for general purpose computation. - Up to 32 registers may be reserved for push constants, even if there is sufficient register pressure to make this impractical. A shader using 128 geometry input components, and having an input type of triangles_adjacency, would use up: - 1 register for r0 (which holds URB handles and various pieces of control information). - 1 register for gl_PrimitiveID. - 102 registers for geometry shader inputs (17 registers per input vertex, assuming DUAL_INSTANCED dispatch mode and allowing for one register of overhead for gl_Position and gl_PointSize, which are present in the URB map even if they are not used). - Up to 32 registers for push constants. - 16 registers for the "MRF hack". That's a total of 152 registers, which is well over the 128 registers the hardware supports. Fortunately, the GLSL 1.50 spec allows us to reduce gl_MaxGeometryInputComponents to 64. Doing that frees up 48 registers, brining the total down to 104 registers, leaving 24 registers available to do computation. Fixes piglit test spec/glsl-1.50/execution/geometry/max-input-components. Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
3c2feb1969
commit
1e3e72e305
1 changed files with 1 additions and 1 deletions
|
|
@ -415,7 +415,7 @@ brw_initialize_context_constants(struct brw_context *brw)
|
|||
if (brw->gen >= 6) {
|
||||
ctx->Const.MaxVarying = 32;
|
||||
ctx->Const.VertexProgram.MaxOutputComponents = 128;
|
||||
ctx->Const.GeometryProgram.MaxInputComponents = 128;
|
||||
ctx->Const.GeometryProgram.MaxInputComponents = 64;
|
||||
ctx->Const.GeometryProgram.MaxOutputComponents = 128;
|
||||
ctx->Const.FragmentProgram.MaxInputComponents = 128;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue