st/mesa: remove old emulation for VS and FS variants
Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Brian Paul <brianp@vmware.com> Tested-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
@@ -4852,7 +4852,7 @@ src_register(struct st_translate *t, const st_src_reg *reg)
|
||||
static struct ureg_dst
|
||||
translate_dst(struct st_translate *t,
|
||||
const st_dst_reg *dst_reg,
|
||||
bool saturate, bool clamp_color)
|
||||
bool saturate)
|
||||
{
|
||||
struct ureg_dst dst = dst_register(t, dst_reg->file, dst_reg->index,
|
||||
dst_reg->array_id);
|
||||
@@ -4864,28 +4864,6 @@ translate_dst(struct st_translate *t,
|
||||
|
||||
if (saturate)
|
||||
dst = ureg_saturate(dst);
|
||||
else if (clamp_color && dst_reg->file == PROGRAM_OUTPUT) {
|
||||
/* Clamp colors for ARB_color_buffer_float. */
|
||||
switch (t->procType) {
|
||||
case TGSI_PROCESSOR_VERTEX:
|
||||
/* This can only occur with a compatibility profile, which doesn't
|
||||
* support geometry shaders. */
|
||||
if (dst_reg->index == VARYING_SLOT_COL0 ||
|
||||
dst_reg->index == VARYING_SLOT_COL1 ||
|
||||
dst_reg->index == VARYING_SLOT_BFC0 ||
|
||||
dst_reg->index == VARYING_SLOT_BFC1) {
|
||||
dst = ureg_saturate(dst);
|
||||
}
|
||||
break;
|
||||
|
||||
case TGSI_PROCESSOR_FRAGMENT:
|
||||
if (dst_reg->index == FRAG_RESULT_COLOR ||
|
||||
dst_reg->index >= FRAG_RESULT_DATA0) {
|
||||
dst = ureg_saturate(dst);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (dst_reg->reladdr != NULL) {
|
||||
assert(dst_reg->file != PROGRAM_TEMPORARY);
|
||||
@@ -4991,8 +4969,7 @@ translate_tex_offset(struct st_translate *t,
|
||||
|
||||
static void
|
||||
compile_tgsi_instruction(struct st_translate *t,
|
||||
const glsl_to_tgsi_instruction *inst,
|
||||
bool clamp_dst_color_output)
|
||||
const glsl_to_tgsi_instruction *inst)
|
||||
{
|
||||
struct ureg_program *ureg = t->ureg;
|
||||
GLuint i;
|
||||
@@ -5010,8 +4987,7 @@ compile_tgsi_instruction(struct st_translate *t,
|
||||
for (i = 0; i < num_dst; i++)
|
||||
dst[i] = translate_dst(t,
|
||||
&inst->dst[i],
|
||||
inst->saturate,
|
||||
clamp_dst_color_output);
|
||||
inst->saturate);
|
||||
|
||||
for (i = 0; i < num_src; i++)
|
||||
src[i] = translate_src(t, &inst->src[i]);
|
||||
@@ -5286,16 +5262,6 @@ emit_face_var(struct gl_context *ctx, struct st_translate *t)
|
||||
t->inputs[t->inputMapping[VARYING_SLOT_FACE]] = ureg_src(face_temp);
|
||||
}
|
||||
|
||||
static void
|
||||
emit_edgeflags(struct st_translate *t)
|
||||
{
|
||||
struct ureg_program *ureg = t->ureg;
|
||||
struct ureg_dst edge_dst = t->outputs[t->outputMapping[VARYING_SLOT_EDGE]];
|
||||
struct ureg_src edge_src = t->inputs[t->inputMapping[VERT_ATTRIB_EDGEFLAG]];
|
||||
|
||||
ureg_MOV(ureg, edge_dst, edge_src);
|
||||
}
|
||||
|
||||
static bool
|
||||
find_array(unsigned attr, struct array_decl *arrays, unsigned count,
|
||||
unsigned *array_id, unsigned *array_size)
|
||||
@@ -5353,9 +5319,7 @@ st_translate_program(
|
||||
const GLuint outputMapping[],
|
||||
const GLuint outputSlotToAttr[],
|
||||
const ubyte outputSemanticName[],
|
||||
const ubyte outputSemanticIndex[],
|
||||
boolean passthrough_edgeflags,
|
||||
boolean clamp_color)
|
||||
const ubyte outputSemanticIndex[])
|
||||
{
|
||||
struct st_translate *t;
|
||||
unsigned i;
|
||||
@@ -5544,8 +5508,6 @@ st_translate_program(
|
||||
t->outputs[i] = ureg_writemask(t->outputs[i], TGSI_WRITEMASK_X);
|
||||
}
|
||||
}
|
||||
if (passthrough_edgeflags)
|
||||
emit_edgeflags(t);
|
||||
}
|
||||
|
||||
/* Declare address register.
|
||||
@@ -5696,7 +5658,7 @@ st_translate_program(
|
||||
*/
|
||||
foreach_in_list(glsl_to_tgsi_instruction, inst, &program->instructions) {
|
||||
set_insn_start(t, ureg_get_instruction_number(ureg));
|
||||
compile_tgsi_instruction(t, inst, clamp_color);
|
||||
compile_tgsi_instruction(t, inst);
|
||||
}
|
||||
|
||||
/* Fix up all emitted labels:
|
||||
|
||||
@@ -52,9 +52,7 @@ enum pipe_error st_translate_program(
|
||||
const GLuint outputMapping[],
|
||||
const GLuint outputSlotToAttr[],
|
||||
const ubyte outputSemanticName[],
|
||||
const ubyte outputSemanticIndex[],
|
||||
boolean passthrough_edgeflags,
|
||||
boolean clamp_color);
|
||||
const ubyte outputSemanticIndex[]);
|
||||
|
||||
void free_glsl_to_tgsi_visitor(struct glsl_to_tgsi_visitor *v);
|
||||
void get_pixel_transfer_visitor(struct st_fragment_program *fp,
|
||||
|
||||
@@ -283,8 +283,7 @@ st_translate_texture_target( GLuint textarget,
|
||||
static struct ureg_dst
|
||||
translate_dst( struct st_translate *t,
|
||||
const struct prog_dst_register *DstReg,
|
||||
boolean saturate,
|
||||
boolean clamp_color)
|
||||
boolean saturate)
|
||||
{
|
||||
struct ureg_dst dst = dst_register( t,
|
||||
DstReg->File,
|
||||
@@ -295,27 +294,6 @@ translate_dst( struct st_translate *t,
|
||||
|
||||
if (saturate)
|
||||
dst = ureg_saturate( dst );
|
||||
else if (clamp_color && DstReg->File == PROGRAM_OUTPUT) {
|
||||
/* Clamp colors for ARB_color_buffer_float. */
|
||||
switch (t->procType) {
|
||||
case TGSI_PROCESSOR_VERTEX:
|
||||
/* This can only occur with a compatibility profile, which doesn't
|
||||
* support geometry shaders. */
|
||||
if (DstReg->Index == VARYING_SLOT_COL0 ||
|
||||
DstReg->Index == VARYING_SLOT_COL1 ||
|
||||
DstReg->Index == VARYING_SLOT_BFC0 ||
|
||||
DstReg->Index == VARYING_SLOT_BFC1) {
|
||||
dst = ureg_saturate(dst);
|
||||
}
|
||||
break;
|
||||
|
||||
case TGSI_PROCESSOR_FRAGMENT:
|
||||
if (DstReg->Index >= FRAG_RESULT_COLOR) {
|
||||
dst = ureg_saturate(dst);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (DstReg->RelAddr)
|
||||
dst = ureg_dst_indirect( dst, ureg_src(t->address[0]) );
|
||||
@@ -649,8 +627,7 @@ static void
|
||||
compile_instruction(
|
||||
struct gl_context *ctx,
|
||||
struct st_translate *t,
|
||||
const struct prog_instruction *inst,
|
||||
boolean clamp_dst_color_output)
|
||||
const struct prog_instruction *inst)
|
||||
{
|
||||
struct ureg_program *ureg = t->ureg;
|
||||
GLuint i;
|
||||
@@ -665,8 +642,7 @@ compile_instruction(
|
||||
if (num_dst)
|
||||
dst[0] = translate_dst( t,
|
||||
&inst->DstReg,
|
||||
inst->Saturate,
|
||||
clamp_dst_color_output);
|
||||
inst->Saturate);
|
||||
|
||||
for (i = 0; i < num_src; i++)
|
||||
src[i] = translate_src( t, &inst->SrcReg[i] );
|
||||
@@ -974,18 +950,6 @@ emit_face_var( struct st_translate *t,
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
emit_edgeflags( struct st_translate *t,
|
||||
const struct gl_program *program )
|
||||
{
|
||||
struct ureg_program *ureg = t->ureg;
|
||||
struct ureg_dst edge_dst = t->outputs[t->outputMapping[VARYING_SLOT_EDGE]];
|
||||
struct ureg_src edge_src = t->inputs[t->inputMapping[VERT_ATTRIB_EDGEFLAG]];
|
||||
|
||||
ureg_MOV( ureg, edge_dst, edge_src );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Translate Mesa program to TGSI format.
|
||||
* \param program the program to translate
|
||||
@@ -1019,9 +983,7 @@ st_translate_mesa_program(
|
||||
GLuint numOutputs,
|
||||
const GLuint outputMapping[],
|
||||
const ubyte outputSemanticName[],
|
||||
const ubyte outputSemanticIndex[],
|
||||
boolean passthrough_edgeflags,
|
||||
boolean clamp_color)
|
||||
const ubyte outputSemanticIndex[])
|
||||
{
|
||||
struct st_translate translate, *t;
|
||||
unsigned i;
|
||||
@@ -1125,8 +1087,6 @@ st_translate_mesa_program(
|
||||
t->outputs[i] = ureg_writemask(t->outputs[i], TGSI_WRITEMASK_X);
|
||||
}
|
||||
}
|
||||
if (passthrough_edgeflags)
|
||||
emit_edgeflags( t, program );
|
||||
}
|
||||
|
||||
/* Declare address register.
|
||||
@@ -1231,7 +1191,7 @@ st_translate_mesa_program(
|
||||
*/
|
||||
for (i = 0; i < program->NumInstructions; i++) {
|
||||
set_insn_start( t, ureg_get_instruction_number( ureg ));
|
||||
compile_instruction( ctx, t, &program->Instructions[i], clamp_color );
|
||||
compile_instruction(ctx, t, &program->Instructions[i]);
|
||||
}
|
||||
|
||||
/* Fix up all emitted labels:
|
||||
|
||||
@@ -58,9 +58,7 @@ st_translate_mesa_program(
|
||||
GLuint numOutputs,
|
||||
const GLuint outputMapping[],
|
||||
const ubyte outputSemanticName[],
|
||||
const ubyte outputSemanticIndex[],
|
||||
boolean passthrough_edgeflags,
|
||||
boolean clamp_color);
|
||||
const ubyte outputSemanticIndex[]);
|
||||
|
||||
unsigned
|
||||
st_translate_texture_target(GLuint textarget, GLboolean shadow);
|
||||
|
||||
@@ -404,9 +404,7 @@ st_translate_vertex_program(struct st_context *st,
|
||||
stvp->result_to_output,
|
||||
output_slot_to_attr,
|
||||
output_semantic_name,
|
||||
output_semantic_index,
|
||||
false,
|
||||
false);
|
||||
output_semantic_index);
|
||||
else
|
||||
error = st_translate_mesa_program(st->ctx,
|
||||
TGSI_PROCESSOR_VERTEX,
|
||||
@@ -422,9 +420,7 @@ st_translate_vertex_program(struct st_context *st,
|
||||
num_outputs,
|
||||
stvp->result_to_output,
|
||||
output_semantic_name,
|
||||
output_semantic_index,
|
||||
false,
|
||||
false);
|
||||
output_semantic_index);
|
||||
|
||||
if (error)
|
||||
goto fail;
|
||||
@@ -859,8 +855,7 @@ st_translate_fragment_program(struct st_context *st,
|
||||
outputMapping,
|
||||
NULL,
|
||||
fs_output_semantic_name,
|
||||
fs_output_semantic_index, FALSE,
|
||||
false);
|
||||
fs_output_semantic_index);
|
||||
else
|
||||
st_translate_mesa_program(st->ctx,
|
||||
TGSI_PROCESSOR_FRAGMENT,
|
||||
@@ -876,8 +871,7 @@ st_translate_fragment_program(struct st_context *st,
|
||||
fs_num_outputs,
|
||||
outputMapping,
|
||||
fs_output_semantic_name,
|
||||
fs_output_semantic_index, FALSE,
|
||||
false);
|
||||
fs_output_semantic_index);
|
||||
|
||||
variant->tgsi.tokens = ureg_get_tokens(ureg, NULL);
|
||||
ureg_destroy(ureg);
|
||||
@@ -1206,9 +1200,7 @@ st_translate_program_common(struct st_context *st,
|
||||
outputMapping,
|
||||
outputSlotToAttr,
|
||||
output_semantic_name,
|
||||
output_semantic_index,
|
||||
FALSE,
|
||||
FALSE);
|
||||
output_semantic_index);
|
||||
|
||||
out_state->tokens = ureg_get_tokens(ureg, NULL);
|
||||
ureg_destroy(ureg);
|
||||
|
||||
Reference in New Issue
Block a user