mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 17:30:12 +01:00
st/mesa: emit saturates in the vertex shader if Shader Model 3.0 is supported
v2: change the requirement from GLSL 1.30 to SM 3.0 (R500 can do this)
This commit is contained in:
parent
48689ca14a
commit
4362bdadf3
3 changed files with 6 additions and 3 deletions
|
|
@ -182,6 +182,7 @@ st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe,
|
|||
|
||||
st->has_stencil_export =
|
||||
screen->get_param(screen, PIPE_CAP_SHADER_STENCIL_EXPORT);
|
||||
st->has_shader_model3 = screen->get_param(screen, PIPE_CAP_SM3);
|
||||
|
||||
/* GL limits and extensions */
|
||||
st_init_limits(st);
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@ struct st_context
|
|||
GLboolean clamp_vert_color_in_shader;
|
||||
boolean has_stencil_export; /**< can do shader stencil export? */
|
||||
boolean has_time_elapsed;
|
||||
boolean has_shader_model3;
|
||||
|
||||
/* On old libGL's for linux we need to invalidate the drawables
|
||||
* on glViewpport calls, this is set via a option.
|
||||
|
|
|
|||
|
|
@ -1287,11 +1287,12 @@ glsl_to_tgsi_visitor::try_emit_mad_for_and_not(ir_expression *ir, int try_operan
|
|||
bool
|
||||
glsl_to_tgsi_visitor::try_emit_sat(ir_expression *ir)
|
||||
{
|
||||
/* Saturates were only introduced to vertex programs in
|
||||
* NV_vertex_program3, so don't give them to drivers in the VP.
|
||||
/* Emit saturates in the vertex shader only if SM 3.0 is supported.
|
||||
*/
|
||||
if (this->prog->Target == GL_VERTEX_PROGRAM_ARB)
|
||||
if (this->prog->Target == GL_VERTEX_PROGRAM_ARB &&
|
||||
!st_context(this->ctx)->has_shader_model3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ir_rvalue *sat_src = ir->as_rvalue_to_saturate();
|
||||
if (!sat_src)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue