cso: add constant buffer save/restore feature for postprocessing
Postprocessing is an internal meta op and should restore the states it changes.
This commit is contained in:
@@ -39,6 +39,7 @@
|
||||
#include "pipe/p_defines.h"
|
||||
#include "util/u_inlines.h"
|
||||
#include "util/u_upload_mgr.h"
|
||||
#include "cso_cache/cso_context.h"
|
||||
|
||||
#include "st_debug.h"
|
||||
#include "st_context.h"
|
||||
@@ -96,16 +97,17 @@ void st_upload_constants( struct st_context *st,
|
||||
_mesa_print_parameter_list(params);
|
||||
}
|
||||
|
||||
st->pipe->set_constant_buffer(st->pipe, shader_type, 0, &cb);
|
||||
cso_set_constant_buffer(st->cso_context, shader_type, 0, &cb);
|
||||
pipe_resource_reference(&cb.buffer, NULL);
|
||||
|
||||
st->state.constants[shader_type].ptr = params->ParameterValues;
|
||||
st->state.constants[shader_type].size = paramBytes;
|
||||
}
|
||||
else if (st->state.constants[shader_type].ptr) {
|
||||
/* Unbind. */
|
||||
st->state.constants[shader_type].ptr = NULL;
|
||||
st->state.constants[shader_type].size = 0;
|
||||
st->pipe->set_constant_buffer(st->pipe, shader_type, 0, NULL);
|
||||
cso_set_constant_buffer(st->cso_context, shader_type, 0, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,7 +198,7 @@ static void st_bind_ubos(struct st_context *st,
|
||||
|
||||
cb.buffer_size = st_obj->buffer->width0 - binding->Offset;
|
||||
|
||||
st->pipe->set_constant_buffer(st->pipe, shader_type, 1 + i, &cb);
|
||||
cso_set_constant_buffer(st->cso_context, shader_type, 1 + i, &cb);
|
||||
pipe_resource_reference(&cb.buffer, NULL);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user