st_extensions: fixup GLSL 1.30 related enables (v3)
This just fixes up the enables for native integers and EXT_texture_integer support in st/mesa. It also set the MaxClipPlanes to 8. We should consider exposing caps for MCP vs MCD, but since core mesa doesn't care yet maybe we can wait for now. v2: use 32-bit formats as per Marek's mail. v3: add calim's fix for INT_DIV_TO_MUL_RCP disabling. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -263,12 +263,6 @@ void st_init_extensions(struct st_context *st)
|
||||
ctx->Const.GLSLVersion = 120;
|
||||
_mesa_override_glsl_version(st->ctx);
|
||||
|
||||
/* Extensions that only depend on the GLSL version:
|
||||
*/
|
||||
if (ctx->Const.GLSLVersion >= 130) {
|
||||
ctx->Extensions.ARB_conservative_depth = GL_TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Extensions that are supported by all Gallium drivers:
|
||||
*/
|
||||
@@ -587,6 +581,23 @@ void st_init_extensions(struct st_context *st)
|
||||
#endif
|
||||
}
|
||||
|
||||
if (screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
|
||||
PIPE_SHADER_CAP_INTEGERS) &&
|
||||
screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
|
||||
PIPE_SHADER_CAP_INTEGERS)) {
|
||||
ctx->Const.NativeIntegers = GL_TRUE;
|
||||
}
|
||||
|
||||
if (ctx->Const.NativeIntegers)
|
||||
ctx->Const.GLSLVersion = 130;
|
||||
|
||||
/* Extensions that only depend on the GLSL version:
|
||||
*/
|
||||
if (ctx->Const.GLSLVersion >= 130) {
|
||||
ctx->Extensions.ARB_conservative_depth = GL_TRUE;
|
||||
ctx->Const.MaxClipPlanes = 8;
|
||||
}
|
||||
|
||||
ctx->Extensions.NV_primitive_restart = GL_TRUE;
|
||||
if (!screen->get_param(screen, PIPE_CAP_PRIMITIVE_RESTART)) {
|
||||
st->sw_primitive_restart = GL_TRUE;
|
||||
@@ -703,4 +714,12 @@ void st_init_extensions(struct st_context *st)
|
||||
ctx->Extensions.ARB_transform_feedback2 = GL_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->Const.NativeIntegers &&
|
||||
screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_UINT, PIPE_TEXTURE_2D, 0,
|
||||
PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET) &&
|
||||
screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_SINT, PIPE_TEXTURE_2D, 0,
|
||||
PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET))
|
||||
ctx->Extensions.EXT_texture_integer = GL_TRUE;
|
||||
|
||||
}
|
||||
|
@@ -5010,13 +5010,18 @@ st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
|
||||
num_clip_distances[i] = get_clip_distance_size(ir);
|
||||
|
||||
do {
|
||||
unsigned what_to_lower = MOD_TO_FRACT | DIV_TO_MUL_RCP |
|
||||
EXP_TO_EXP2 | LOG_TO_LOG2;
|
||||
if (options->EmitNoPow)
|
||||
what_to_lower |= POW_TO_EXP2;
|
||||
if (!ctx->Const.NativeIntegers)
|
||||
what_to_lower |= INT_DIV_TO_MUL_RCP;
|
||||
|
||||
progress = false;
|
||||
|
||||
/* Lowering */
|
||||
do_mat_op_to_vec(ir);
|
||||
lower_instructions(ir, (MOD_TO_FRACT | DIV_TO_MUL_RCP | EXP_TO_EXP2
|
||||
| LOG_TO_LOG2 | INT_DIV_TO_MUL_RCP
|
||||
| ((options->EmitNoPow) ? POW_TO_EXP2 : 0)));
|
||||
lower_instructions(ir, what_to_lower);
|
||||
|
||||
progress = do_lower_jumps(ir, true, true, options->EmitNoMainReturn, options->EmitNoCont, options->EmitNoLoops) || progress;
|
||||
|
||||
|
Reference in New Issue
Block a user