Skip to content
Snippets Groups Projects
Commit b1d0e4d0 authored by Lucas Stach's avatar Lucas Stach Committed by Eric Engestrom
Browse files

etnaviv: initialize vertex attributes on context reset


It seems that at least some GC400 come out of reset with random vertex
attributes enabled and also don't disable them on the write to the first
config register as normal. Enabling all attributes seems to provide the
GPU with the required edge to actually disable the unused attributes on
the next draw.

Cc: mesa-stable
Reported-by: Steven Walter
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Reviewed-by: default avatarChristian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <mesa/mesa!14285>
(cherry picked from commit c1f8bc67)
parent 9195ddff
No related merge requests found
......@@ -1903,7 +1903,7 @@
"description": "etnaviv: initialize vertex attributes on context reset",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null
},
......
......@@ -407,6 +407,7 @@ etna_reset_gpu_state(struct etna_context *ctx)
{
struct etna_cmd_stream *stream = ctx->stream;
struct etna_screen *screen = ctx->screen;
uint32_t dummy_attribs[VIVS_NFE_GENERIC_ATTRIB__LEN] = { 0 };
etna_set_state(stream, VIVS_GL_API_MODE, VIVS_GL_API_MODE_OPENGL);
etna_set_state(stream, VIVS_GL_VERTEX_ELEMENT_CONFIG, 0x00000001);
......@@ -467,6 +468,20 @@ etna_reset_gpu_state(struct etna_context *ctx)
VIVS_VS_ICACHE_INVALIDATE_UNK4);
}
/* It seems that some GPUs (at least some GC400 have shown this behavior)
* come out of reset with random vertex attributes enabled and also don't
* disable them on the write to the first config register as normal. Enabling
* all attributes seems to provide the GPU with the required edge to actually
* disable the unused attributes on the next draw.
*/
if (screen->specs.halti >= 5) {
etna_set_state_multi(stream, VIVS_NFE_GENERIC_ATTRIB_CONFIG0(0),
VIVS_NFE_GENERIC_ATTRIB__LEN, dummy_attribs);
} else {
etna_set_state_multi(stream, VIVS_FE_VERTEX_ELEMENT_CONFIG(0),
screen->specs.halti >= 0 ? 16 : 12, dummy_attribs);
}
ctx->dirty = ~0L;
ctx->dirty_sampler_views = ~0L;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment