st/mesa: add texture updates for tessellation programs
This commit is contained in:
@@ -61,6 +61,8 @@ static const struct st_tracked_state *atoms[] =
|
|||||||
&st_update_vertex_texture,
|
&st_update_vertex_texture,
|
||||||
&st_update_fragment_texture,
|
&st_update_fragment_texture,
|
||||||
&st_update_geometry_texture,
|
&st_update_geometry_texture,
|
||||||
|
&st_update_tessctrl_texture,
|
||||||
|
&st_update_tesseval_texture,
|
||||||
&st_update_sampler, /* depends on update_*_texture for swizzle */
|
&st_update_sampler, /* depends on update_*_texture for swizzle */
|
||||||
&st_update_framebuffer,
|
&st_update_framebuffer,
|
||||||
&st_update_msaa,
|
&st_update_msaa,
|
||||||
|
@@ -66,6 +66,8 @@ extern const struct st_tracked_state st_update_sampler;
|
|||||||
extern const struct st_tracked_state st_update_fragment_texture;
|
extern const struct st_tracked_state st_update_fragment_texture;
|
||||||
extern const struct st_tracked_state st_update_vertex_texture;
|
extern const struct st_tracked_state st_update_vertex_texture;
|
||||||
extern const struct st_tracked_state st_update_geometry_texture;
|
extern const struct st_tracked_state st_update_geometry_texture;
|
||||||
|
extern const struct st_tracked_state st_update_tessctrl_texture;
|
||||||
|
extern const struct st_tracked_state st_update_tesseval_texture;
|
||||||
extern const struct st_tracked_state st_finalize_textures;
|
extern const struct st_tracked_state st_finalize_textures;
|
||||||
extern const struct st_tracked_state st_update_fs_constants;
|
extern const struct st_tracked_state st_update_fs_constants;
|
||||||
extern const struct st_tracked_state st_update_gs_constants;
|
extern const struct st_tracked_state st_update_gs_constants;
|
||||||
|
@@ -305,6 +305,22 @@ update_samplers(struct st_context *st)
|
|||||||
st->state.samplers[PIPE_SHADER_GEOMETRY],
|
st->state.samplers[PIPE_SHADER_GEOMETRY],
|
||||||
&st->state.num_samplers[PIPE_SHADER_GEOMETRY]);
|
&st->state.num_samplers[PIPE_SHADER_GEOMETRY]);
|
||||||
}
|
}
|
||||||
|
if (ctx->TessCtrlProgram._Current) {
|
||||||
|
update_shader_samplers(st,
|
||||||
|
PIPE_SHADER_TESS_CTRL,
|
||||||
|
&ctx->TessCtrlProgram._Current->Base,
|
||||||
|
ctx->Const.Program[MESA_SHADER_TESS_CTRL].MaxTextureImageUnits,
|
||||||
|
st->state.samplers[PIPE_SHADER_TESS_CTRL],
|
||||||
|
&st->state.num_samplers[PIPE_SHADER_TESS_CTRL]);
|
||||||
|
}
|
||||||
|
if (ctx->TessEvalProgram._Current) {
|
||||||
|
update_shader_samplers(st,
|
||||||
|
PIPE_SHADER_TESS_EVAL,
|
||||||
|
&ctx->TessEvalProgram._Current->Base,
|
||||||
|
ctx->Const.Program[MESA_SHADER_TESS_EVAL].MaxTextureImageUnits,
|
||||||
|
st->state.samplers[PIPE_SHADER_TESS_EVAL],
|
||||||
|
&st->state.num_samplers[PIPE_SHADER_TESS_EVAL]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -474,6 +474,38 @@ update_geometry_textures(struct st_context *st)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_tessctrl_textures(struct st_context *st)
|
||||||
|
{
|
||||||
|
const struct gl_context *ctx = st->ctx;
|
||||||
|
|
||||||
|
if (ctx->TessCtrlProgram._Current) {
|
||||||
|
update_textures(st,
|
||||||
|
PIPE_SHADER_TESS_CTRL,
|
||||||
|
&ctx->TessCtrlProgram._Current->Base,
|
||||||
|
ctx->Const.Program[MESA_SHADER_TESS_CTRL].MaxTextureImageUnits,
|
||||||
|
st->state.sampler_views[PIPE_SHADER_TESS_CTRL],
|
||||||
|
&st->state.num_sampler_views[PIPE_SHADER_TESS_CTRL]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_tesseval_textures(struct st_context *st)
|
||||||
|
{
|
||||||
|
const struct gl_context *ctx = st->ctx;
|
||||||
|
|
||||||
|
if (ctx->TessEvalProgram._Current) {
|
||||||
|
update_textures(st,
|
||||||
|
PIPE_SHADER_TESS_EVAL,
|
||||||
|
&ctx->TessEvalProgram._Current->Base,
|
||||||
|
ctx->Const.Program[MESA_SHADER_TESS_EVAL].MaxTextureImageUnits,
|
||||||
|
st->state.sampler_views[PIPE_SHADER_TESS_EVAL],
|
||||||
|
&st->state.num_sampler_views[PIPE_SHADER_TESS_EVAL]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const struct st_tracked_state st_update_fragment_texture = {
|
const struct st_tracked_state st_update_fragment_texture = {
|
||||||
"st_update_texture", /* name */
|
"st_update_texture", /* name */
|
||||||
{ /* dirty */
|
{ /* dirty */
|
||||||
@@ -504,6 +536,26 @@ const struct st_tracked_state st_update_geometry_texture = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const struct st_tracked_state st_update_tessctrl_texture = {
|
||||||
|
"st_update_tessctrl_texture", /* name */
|
||||||
|
{ /* dirty */
|
||||||
|
_NEW_TEXTURE, /* mesa */
|
||||||
|
ST_NEW_TESSCTRL_PROGRAM, /* st */
|
||||||
|
},
|
||||||
|
update_tessctrl_textures /* update */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const struct st_tracked_state st_update_tesseval_texture = {
|
||||||
|
"st_update_tesseval_texture", /* name */
|
||||||
|
{ /* dirty */
|
||||||
|
_NEW_TEXTURE, /* mesa */
|
||||||
|
ST_NEW_TESSEVAL_PROGRAM, /* st */
|
||||||
|
},
|
||||||
|
update_tesseval_textures /* update */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
finalize_textures(struct st_context *st)
|
finalize_textures(struct st_context *st)
|
||||||
|
Reference in New Issue
Block a user