st/mesa: add ARB_blend_func_extended support to state tracker.
This adds the blend mode mapping, it also uses the var->index in the glsl to tgsi convertor - this is the other half of my using 4 in the GLSL compiler. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -78,10 +78,10 @@ translate_blend(GLenum blend)
|
|||||||
return PIPE_BLENDFACTOR_CONST_COLOR;
|
return PIPE_BLENDFACTOR_CONST_COLOR;
|
||||||
case GL_CONSTANT_ALPHA:
|
case GL_CONSTANT_ALPHA:
|
||||||
return PIPE_BLENDFACTOR_CONST_ALPHA;
|
return PIPE_BLENDFACTOR_CONST_ALPHA;
|
||||||
/*
|
case GL_SRC1_COLOR:
|
||||||
return PIPE_BLENDFACTOR_SRC1_COLOR;
|
return PIPE_BLENDFACTOR_SRC1_COLOR;
|
||||||
|
case GL_SRC1_ALPHA:
|
||||||
return PIPE_BLENDFACTOR_SRC1_ALPHA;
|
return PIPE_BLENDFACTOR_SRC1_ALPHA;
|
||||||
*/
|
|
||||||
case GL_ZERO:
|
case GL_ZERO:
|
||||||
return PIPE_BLENDFACTOR_ZERO;
|
return PIPE_BLENDFACTOR_ZERO;
|
||||||
case GL_ONE_MINUS_SRC_COLOR:
|
case GL_ONE_MINUS_SRC_COLOR:
|
||||||
@@ -96,10 +96,10 @@ translate_blend(GLenum blend)
|
|||||||
return PIPE_BLENDFACTOR_INV_CONST_COLOR;
|
return PIPE_BLENDFACTOR_INV_CONST_COLOR;
|
||||||
case GL_ONE_MINUS_CONSTANT_ALPHA:
|
case GL_ONE_MINUS_CONSTANT_ALPHA:
|
||||||
return PIPE_BLENDFACTOR_INV_CONST_ALPHA;
|
return PIPE_BLENDFACTOR_INV_CONST_ALPHA;
|
||||||
/*
|
case GL_ONE_MINUS_SRC1_COLOR:
|
||||||
return PIPE_BLENDFACTOR_INV_SRC1_COLOR;
|
return PIPE_BLENDFACTOR_INV_SRC1_COLOR;
|
||||||
|
case GL_ONE_MINUS_SRC1_ALPHA:
|
||||||
return PIPE_BLENDFACTOR_INV_SRC1_ALPHA;
|
return PIPE_BLENDFACTOR_INV_SRC1_ALPHA;
|
||||||
*/
|
|
||||||
default:
|
default:
|
||||||
assert("invalid GL token in translate_blend()" == NULL);
|
assert("invalid GL token in translate_blend()" == NULL);
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -120,6 +120,10 @@ void st_init_limits(struct st_context *st)
|
|||||||
= _clamp(screen->get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS),
|
= _clamp(screen->get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS),
|
||||||
1, MAX_DRAW_BUFFERS);
|
1, MAX_DRAW_BUFFERS);
|
||||||
|
|
||||||
|
c->MaxDualSourceDrawBuffers
|
||||||
|
= _clamp(screen->get_param(screen, PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS),
|
||||||
|
0, MAX_DRAW_BUFFERS);
|
||||||
|
|
||||||
c->MaxLineWidth
|
c->MaxLineWidth
|
||||||
= _maxf(1.0f, screen->get_paramf(screen,
|
= _maxf(1.0f, screen->get_paramf(screen,
|
||||||
PIPE_CAPF_MAX_LINE_WIDTH));
|
PIPE_CAPF_MAX_LINE_WIDTH));
|
||||||
@@ -629,4 +633,7 @@ void st_init_extensions(struct st_context *st)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ctx->Const.MaxDualSourceDrawBuffers > 0)
|
||||||
|
ctx->Extensions.ARB_blend_func_extended = GL_TRUE;
|
||||||
}
|
}
|
||||||
|
@@ -1925,7 +1925,7 @@ glsl_to_tgsi_visitor::visit(ir_dereference_variable *ir)
|
|||||||
assert(var->location != -1);
|
assert(var->location != -1);
|
||||||
entry = new(mem_ctx) variable_storage(var,
|
entry = new(mem_ctx) variable_storage(var,
|
||||||
PROGRAM_OUTPUT,
|
PROGRAM_OUTPUT,
|
||||||
var->location);
|
var->location + var->index);
|
||||||
break;
|
break;
|
||||||
case ir_var_system_value:
|
case ir_var_system_value:
|
||||||
entry = new(mem_ctx) variable_storage(var,
|
entry = new(mem_ctx) variable_storage(var,
|
||||||
|
Reference in New Issue
Block a user