mesa/st: Expose pipe driver's shader limits.
This commit is contained in:
@@ -142,95 +142,25 @@ void st_init_limits(struct st_context *st)
|
|||||||
/* Quads always follow GL provoking rules. */
|
/* Quads always follow GL provoking rules. */
|
||||||
c->QuadsFollowProvokingVertexConvention = GL_FALSE;
|
c->QuadsFollowProvokingVertexConvention = GL_FALSE;
|
||||||
|
|
||||||
if (screen->get_param(screen, PIPE_CAP_GLSL)) {
|
pc = &c->FragmentProgram;
|
||||||
/*
|
pc->MaxNativeInstructions = screen->get_param(screen, PIPE_CAP_MAX_FS_INSTRUCTIONS);
|
||||||
* In the lack of more fine grained capabilities, if the pipe driver supports
|
pc->MaxNativeAluInstructions = screen->get_param(screen, PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS);
|
||||||
* GLSL then assume native limits match Mesa software limits.
|
pc->MaxNativeTexInstructions = screen->get_param(screen, PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS);
|
||||||
*/
|
pc->MaxNativeTexIndirections = screen->get_param(screen, PIPE_CAP_MAX_FS_TEX_INDIRECTIONS);
|
||||||
|
pc->MaxNativeAttribs = screen->get_param(screen, PIPE_CAP_MAX_FS_INPUTS);
|
||||||
|
pc->MaxNativeTemps = screen->get_param(screen, PIPE_CAP_MAX_FS_TEMPS);
|
||||||
|
pc->MaxNativeAddressRegs = screen->get_param(screen, PIPE_CAP_MAX_FS_ADDRS);
|
||||||
|
pc->MaxNativeParameters = screen->get_param(screen, PIPE_CAP_MAX_FS_CONSTS);
|
||||||
|
|
||||||
pc = &c->FragmentProgram;
|
pc = &c->VertexProgram;
|
||||||
pc->MaxNativeInstructions = pc->MaxInstructions;
|
pc->MaxNativeInstructions = screen->get_param(screen, PIPE_CAP_MAX_VS_INSTRUCTIONS);
|
||||||
pc->MaxNativeAluInstructions = pc->MaxAluInstructions;
|
pc->MaxNativeAluInstructions = screen->get_param(screen, PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS);
|
||||||
pc->MaxNativeTexInstructions = pc->MaxTexInstructions;
|
pc->MaxNativeTexInstructions = screen->get_param(screen, PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS);
|
||||||
pc->MaxNativeTexIndirections = pc->MaxTexIndirections;
|
pc->MaxNativeTexIndirections = screen->get_param(screen, PIPE_CAP_MAX_VS_TEX_INDIRECTIONS);
|
||||||
pc->MaxNativeAttribs = pc->MaxAttribs;
|
pc->MaxNativeAttribs = screen->get_param(screen, PIPE_CAP_MAX_VS_INPUTS);
|
||||||
pc->MaxNativeTemps = pc->MaxTemps;
|
pc->MaxNativeTemps = screen->get_param(screen, PIPE_CAP_MAX_VS_TEMPS);
|
||||||
pc->MaxNativeAddressRegs = pc->MaxAddressRegs;
|
pc->MaxNativeAddressRegs = screen->get_param(screen, PIPE_CAP_MAX_VS_ADDRS);
|
||||||
pc->MaxNativeParameters = pc->MaxParameters;
|
pc->MaxNativeParameters = screen->get_param(screen, PIPE_CAP_MAX_VS_CONSTS);
|
||||||
|
|
||||||
pc = &c->VertexProgram;
|
|
||||||
pc->MaxNativeInstructions = pc->MaxInstructions;
|
|
||||||
pc->MaxNativeAluInstructions = pc->MaxAluInstructions;
|
|
||||||
pc->MaxNativeTexInstructions = pc->MaxTexInstructions;
|
|
||||||
pc->MaxNativeTexIndirections = pc->MaxTexIndirections;
|
|
||||||
pc->MaxNativeAttribs = pc->MaxAttribs;
|
|
||||||
pc->MaxNativeTemps = pc->MaxTemps;
|
|
||||||
pc->MaxNativeAddressRegs = pc->MaxAddressRegs;
|
|
||||||
pc->MaxNativeParameters = pc->MaxParameters;
|
|
||||||
} else if (screen->get_param(screen, PIPE_CAP_SM3)) {
|
|
||||||
/*
|
|
||||||
* Assume the hardware meets the minimum requirements
|
|
||||||
* for Shader Model 3.
|
|
||||||
*
|
|
||||||
* See also:
|
|
||||||
* - http://msdn.microsoft.com/en-us/library/bb172920(VS.85).aspx
|
|
||||||
* - http://msdn.microsoft.com/en-us/library/bb172963(VS.85).aspx
|
|
||||||
*/
|
|
||||||
|
|
||||||
pc = &c->FragmentProgram;
|
|
||||||
pc->MaxNativeInstructions = 512; /* D3DMIN30SHADERINSTRUCTIONS */
|
|
||||||
pc->MaxNativeAluInstructions = pc->MaxNativeInstructions;
|
|
||||||
pc->MaxNativeTexInstructions = pc->MaxNativeInstructions;
|
|
||||||
pc->MaxNativeTexIndirections = pc->MaxNativeTexInstructions;
|
|
||||||
pc->MaxNativeAttribs = 10;
|
|
||||||
pc->MaxNativeTemps = 32;
|
|
||||||
pc->MaxNativeAddressRegs = 1; /* aL */
|
|
||||||
pc->MaxNativeParameters = 224;
|
|
||||||
|
|
||||||
pc = &c->VertexProgram;
|
|
||||||
pc->MaxNativeInstructions = 512; /* D3DMIN30SHADERINSTRUCTIONS */
|
|
||||||
pc->MaxNativeAluInstructions = pc->MaxNativeInstructions;
|
|
||||||
pc->MaxNativeTexInstructions = pc->MaxNativeInstructions;
|
|
||||||
pc->MaxNativeTexIndirections = pc->MaxNativeTexInstructions;
|
|
||||||
pc->MaxNativeAttribs = 16;
|
|
||||||
pc->MaxNativeTemps = 32;
|
|
||||||
pc->MaxNativeAddressRegs = 2; /* a0 and aL */
|
|
||||||
pc->MaxNativeParameters = 256;
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
* Assume the hardware meets the minimum requirements
|
|
||||||
* for Shader Model 2.
|
|
||||||
*
|
|
||||||
* See also:
|
|
||||||
* - http://msdn.microsoft.com/en-us/library/bb172918(VS.85).aspx
|
|
||||||
* - http://msdn.microsoft.com/en-us/library/bb172961(VS.85).aspx
|
|
||||||
*/
|
|
||||||
|
|
||||||
pc = &c->FragmentProgram;
|
|
||||||
pc->MaxNativeInstructions = 96; /* D3DPS20_MIN_NUMINSTRUCTIONSLOTS */
|
|
||||||
pc->MaxNativeAluInstructions = 64;
|
|
||||||
pc->MaxNativeTexInstructions = 32;
|
|
||||||
pc->MaxNativeTexIndirections = pc->MaxNativeTexInstructions;
|
|
||||||
pc->MaxNativeAttribs = 10; /* 2 color + 8 texture coord */
|
|
||||||
pc->MaxNativeTemps = 12; /* D3DPS20_MIN_NUMTEMPS */
|
|
||||||
pc->MaxNativeAddressRegs = 0;
|
|
||||||
pc->MaxNativeParameters = 16;
|
|
||||||
|
|
||||||
pc = &c->VertexProgram;
|
|
||||||
pc->MaxNativeInstructions = 256;
|
|
||||||
pc->MaxNativeAluInstructions = 256;
|
|
||||||
pc->MaxNativeTexInstructions = 0;
|
|
||||||
pc->MaxNativeTexIndirections = 0;
|
|
||||||
pc->MaxNativeAttribs = 16;
|
|
||||||
pc->MaxNativeTemps = 12; /* D3DVS20_MIN_NUMTEMPS */
|
|
||||||
pc->MaxNativeAddressRegs = 2; /* a0 and aL */
|
|
||||||
pc->MaxNativeParameters = 256;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!screen->get_param(screen, PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS)) {
|
|
||||||
c->VertexProgram.MaxNativeTexInstructions = 0;
|
|
||||||
c->VertexProgram.MaxNativeTexIndirections = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user