[Mesa-dev] [PATCH 20/20] st/mesa: remove out_num_textures from update_textures
Marek Olšák
maraeo at gmail.com
Tue Nov 21 18:02:02 UTC 2017
From: Marek Olšák <marek.olsak at amd.com>
---
src/mesa/state_tracker/st_atom_texture.c | 32 ++++++++++++--------------------
1 file changed, 12 insertions(+), 20 deletions(-)
diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c
index 105fa79..ce7755f 100644
--- a/src/mesa/state_tracker/st_atom_texture.c
+++ b/src/mesa/state_tracker/st_atom_texture.c
@@ -94,24 +94,23 @@ st_update_single_texture(struct st_context *st,
glsl130_or_later,
ignore_srgb_decode);
}
static void
update_textures(struct st_context *st,
enum pipe_shader_type shader_stage,
const struct gl_program *prog,
- struct pipe_sampler_view **sampler_views,
- unsigned *out_num_textures)
+ struct pipe_sampler_view **sampler_views)
{
- const GLuint old_max = *out_num_textures;
+ const GLuint old_max = st->state.num_sampler_views[shader_stage];
GLbitfield samplers_used = prog->SamplersUsed;
GLbitfield texel_fetch_samplers = prog->info.textures_used_by_txf;
GLbitfield free_slots = ~prog->SamplersUsed;
GLbitfield external_samplers_used = prog->ExternalSamplersUsed;
GLuint unit;
if (samplers_used == 0x0 && old_max == 0)
return;
unsigned num_textures = 0;
@@ -206,105 +205,98 @@ update_textures(struct st_context *st,
break;
}
num_textures = MAX2(num_textures, extra + 1);
}
cso_set_sampler_views(st->cso_context,
shader_stage,
num_textures,
sampler_views);
- *out_num_textures = num_textures;
+ st->state.num_sampler_views[shader_stage] = num_textures;
}
/* Same as update_textures, but don't store the views in st_context. */
static void
update_textures_local(struct st_context *st,
enum pipe_shader_type shader_stage,
- const struct gl_program *prog,
- unsigned *out_num_textures)
+ const struct gl_program *prog)
{
struct pipe_sampler_view *local_views[PIPE_MAX_SAMPLERS] = {0};
- update_textures(st, shader_stage, prog, local_views, out_num_textures);
+ update_textures(st, shader_stage, prog, local_views);
- unsigned num = *out_num_textures;
+ unsigned num = st->state.num_sampler_views[shader_stage];
for (unsigned i = 0; i < num; i++)
pipe_sampler_view_reference(&local_views[i], NULL);
}
void
st_update_vertex_textures(struct st_context *st)
{
const struct gl_context *ctx = st->ctx;
if (ctx->Const.Program[MESA_SHADER_VERTEX].MaxTextureImageUnits > 0) {
update_textures_local(st, PIPE_SHADER_VERTEX,
- ctx->VertexProgram._Current,
- &st->state.num_sampler_views[PIPE_SHADER_VERTEX]);
+ ctx->VertexProgram._Current);
}
}
void
st_update_fragment_textures(struct st_context *st)
{
const struct gl_context *ctx = st->ctx;
update_textures(st,
PIPE_SHADER_FRAGMENT,
ctx->FragmentProgram._Current,
- st->state.frag_sampler_views,
- &st->state.num_sampler_views[PIPE_SHADER_FRAGMENT]);
+ st->state.frag_sampler_views);
}
void
st_update_geometry_textures(struct st_context *st)
{
const struct gl_context *ctx = st->ctx;
if (ctx->GeometryProgram._Current) {
update_textures_local(st, PIPE_SHADER_GEOMETRY,
- ctx->GeometryProgram._Current,
- &st->state.num_sampler_views[PIPE_SHADER_GEOMETRY]);
+ ctx->GeometryProgram._Current);
}
}
void
st_update_tessctrl_textures(struct st_context *st)
{
const struct gl_context *ctx = st->ctx;
if (ctx->TessCtrlProgram._Current) {
update_textures_local(st, PIPE_SHADER_TESS_CTRL,
- ctx->TessCtrlProgram._Current,
- &st->state.num_sampler_views[PIPE_SHADER_TESS_CTRL]);
+ ctx->TessCtrlProgram._Current);
}
}
void
st_update_tesseval_textures(struct st_context *st)
{
const struct gl_context *ctx = st->ctx;
if (ctx->TessEvalProgram._Current) {
update_textures_local(st, PIPE_SHADER_TESS_EVAL,
- ctx->TessEvalProgram._Current,
- &st->state.num_sampler_views[PIPE_SHADER_TESS_EVAL]);
+ ctx->TessEvalProgram._Current);
}
}
void
st_update_compute_textures(struct st_context *st)
{
const struct gl_context *ctx = st->ctx;
if (ctx->ComputeProgram._Current) {
update_textures_local(st, PIPE_SHADER_COMPUTE,
- ctx->ComputeProgram._Current,
- &st->state.num_sampler_views[PIPE_SHADER_COMPUTE]);
+ ctx->ComputeProgram._Current);
}
}
--
2.7.4
More information about the mesa-dev
mailing list