etnaviv: Emit SCALE for vertex attributes
This is used by HALTI2+ (GC3000+) when drawing with DRAW_INSTANCED. It is also necessary when switching between integer and floating point vertex element formats. Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com> Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
This commit is contained in:

committed by
Christian Gmeiner

parent
74e38739ca
commit
23630ab1b6
@@ -350,6 +350,11 @@ etna_emit_state(struct etna_context *ctx)
|
||||
/*00600*/ etna_set_state_multi(stream, VIVS_FE_VERTEX_ELEMENT_CONFIG(0),
|
||||
ctx->vertex_elements->num_elements,
|
||||
ctx->vertex_elements->FE_VERTEX_ELEMENT_CONFIG);
|
||||
if (ctx->specs.halti >= 2) {
|
||||
/*00780*/ etna_set_state_multi(stream, VIVS_FE_GENERIC_ATTRIB_SCALE(0),
|
||||
ctx->vertex_elements->num_elements,
|
||||
ctx->vertex_elements->NFE_GENERIC_ATTRIB_SCALE);
|
||||
}
|
||||
}
|
||||
|
||||
/* The following code is originally generated by gen_merge_state.py, to
|
||||
|
@@ -216,6 +216,7 @@ struct compiled_framebuffer_state {
|
||||
struct compiled_vertex_elements_state {
|
||||
unsigned num_elements;
|
||||
uint32_t FE_VERTEX_ELEMENT_CONFIG[VIVS_FE_VERTEX_ELEMENT_CONFIG__LEN];
|
||||
uint32_t NFE_GENERIC_ATTRIB_SCALE[VIVS_NFE_GENERIC_ATTRIB__LEN];
|
||||
};
|
||||
|
||||
/* Compiled context->set_vertex_buffer result */
|
||||
|
@@ -550,6 +550,7 @@ etna_vertex_elements_state_create(struct pipe_context *pctx,
|
||||
VIVS_FE_VERTEX_ELEMENT_CONFIG_STREAM(elements[idx].vertex_buffer_index) |
|
||||
VIVS_FE_VERTEX_ELEMENT_CONFIG_START(elements[idx].src_offset) |
|
||||
VIVS_FE_VERTEX_ELEMENT_CONFIG_END(end_offset - start_offset);
|
||||
cs->NFE_GENERIC_ATTRIB_SCALE[idx] = 0x3f800000; /* 1 for integer, 1.0 for float */
|
||||
}
|
||||
|
||||
return cs;
|
||||
|
Reference in New Issue
Block a user