st/mesa: BufferData should flag NewDriverState

because NewDriverState is filtered depending on active shader states,
while st->dirty isn't.

Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
Marek Olšák 2016-08-07 02:45:30 +02:00
parent 085aa7f91e
commit 317e136ef0

View file

@ -337,15 +337,15 @@ st_bufferobj_data(struct gl_context *ctx,
* might be using it.
*/
/* TODO: Add arrays to usage history */
st->dirty |= ST_NEW_VERTEX_ARRAYS;
ctx->NewDriverState |= ST_NEW_VERTEX_ARRAYS;
if (st_obj->Base.UsageHistory & USAGE_UNIFORM_BUFFER)
st->dirty |= ST_NEW_UNIFORM_BUFFER;
ctx->NewDriverState |= ST_NEW_UNIFORM_BUFFER;
if (st_obj->Base.UsageHistory & USAGE_SHADER_STORAGE_BUFFER)
st->dirty |= ST_NEW_STORAGE_BUFFER;
ctx->NewDriverState |= ST_NEW_STORAGE_BUFFER;
if (st_obj->Base.UsageHistory & USAGE_TEXTURE_BUFFER)
st->dirty |= ST_NEW_SAMPLER_VIEWS | ST_NEW_IMAGE_UNITS;
ctx->NewDriverState |= ST_NEW_SAMPLER_VIEWS | ST_NEW_IMAGE_UNITS;
if (st_obj->Base.UsageHistory & USAGE_ATOMIC_COUNTER_BUFFER)
st->dirty |= ST_NEW_ATOMIC_BUFFER;
ctx->NewDriverState |= ST_NEW_ATOMIC_BUFFER;
return GL_TRUE;
}