mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-11 06:28:09 +02:00
[g3dvl] no need for individual samplers for idct stage 1 & 2
This commit is contained in:
parent
8330bc29dd
commit
5a351e5129
2 changed files with 10 additions and 19 deletions
|
|
@ -416,7 +416,7 @@ init_state(struct vl_idct *idct)
|
|||
if (!idct->rs_state)
|
||||
goto error_rs_state;
|
||||
|
||||
for (i = 0; i < 4; ++i) {
|
||||
for (i = 0; i < 2; ++i) {
|
||||
memset(&sampler, 0, sizeof(sampler));
|
||||
sampler.wrap_s = PIPE_TEX_WRAP_REPEAT;
|
||||
sampler.wrap_t = PIPE_TEX_WRAP_REPEAT;
|
||||
|
|
@ -427,17 +427,17 @@ init_state(struct vl_idct *idct)
|
|||
sampler.compare_mode = PIPE_TEX_COMPARE_NONE;
|
||||
sampler.compare_func = PIPE_FUNC_ALWAYS;
|
||||
sampler.normalized_coords = 1;
|
||||
idct->samplers.all[i] = idct->pipe->create_sampler_state(idct->pipe, &sampler);
|
||||
if (!idct->samplers.all[i])
|
||||
idct->samplers[i] = idct->pipe->create_sampler_state(idct->pipe, &sampler);
|
||||
if (!idct->samplers[i])
|
||||
goto error_samplers;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
error_samplers:
|
||||
for (i = 0; i < 4; ++i)
|
||||
if (idct->samplers.all[i])
|
||||
idct->pipe->delete_sampler_state(idct->pipe, idct->samplers.all[i]);
|
||||
for (i = 0; i < 2; ++i)
|
||||
if (idct->samplers[i])
|
||||
idct->pipe->delete_sampler_state(idct->pipe, idct->samplers[i]);
|
||||
|
||||
idct->pipe->delete_rasterizer_state(idct->pipe, idct->rs_state);
|
||||
|
||||
|
|
@ -450,8 +450,8 @@ cleanup_state(struct vl_idct *idct)
|
|||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < 4; ++i)
|
||||
idct->pipe->delete_sampler_state(idct->pipe, idct->samplers.all[i]);
|
||||
for (i = 0; i < 2; ++i)
|
||||
idct->pipe->delete_sampler_state(idct->pipe, idct->samplers[i]);
|
||||
|
||||
idct->pipe->delete_rasterizer_state(idct->pipe, idct->rs_state);
|
||||
}
|
||||
|
|
@ -795,12 +795,12 @@ vl_idct_flush(struct vl_idct *idct, struct vl_idct_buffer *buffer, unsigned num_
|
|||
num_verts = idct->blocks_x * idct->blocks_y * 4;
|
||||
|
||||
idct->pipe->bind_rasterizer_state(idct->pipe, idct->rs_state);
|
||||
idct->pipe->bind_fragment_sampler_states(idct->pipe, 2, idct->samplers);
|
||||
|
||||
/* first stage */
|
||||
idct->pipe->set_framebuffer_state(idct->pipe, &buffer->fb_state[0]);
|
||||
idct->pipe->set_viewport_state(idct->pipe, &buffer->viewport[0]);
|
||||
idct->pipe->set_fragment_sampler_views(idct->pipe, 2, buffer->sampler_views.stage[0]);
|
||||
idct->pipe->bind_fragment_sampler_states(idct->pipe, 2, idct->samplers.stage[0]);
|
||||
idct->pipe->bind_vs_state(idct->pipe, idct->matrix_vs);
|
||||
idct->pipe->bind_fs_state(idct->pipe, idct->matrix_fs);
|
||||
util_draw_arrays_instanced(idct->pipe, PIPE_PRIM_QUADS, 0, num_verts, 0, num_instances);
|
||||
|
|
@ -809,7 +809,6 @@ vl_idct_flush(struct vl_idct *idct, struct vl_idct_buffer *buffer, unsigned num_
|
|||
idct->pipe->set_framebuffer_state(idct->pipe, &buffer->fb_state[1]);
|
||||
idct->pipe->set_viewport_state(idct->pipe, &buffer->viewport[1]);
|
||||
idct->pipe->set_fragment_sampler_views(idct->pipe, 2, buffer->sampler_views.stage[1]);
|
||||
idct->pipe->bind_fragment_sampler_states(idct->pipe, 2, idct->samplers.stage[1]);
|
||||
idct->pipe->bind_vs_state(idct->pipe, idct->transpose_vs);
|
||||
idct->pipe->bind_fs_state(idct->pipe, idct->transpose_fs);
|
||||
util_draw_arrays_instanced(idct->pipe, PIPE_PRIM_QUADS, 0, num_verts, 0, num_instances);
|
||||
|
|
|
|||
|
|
@ -44,15 +44,7 @@ struct vl_idct
|
|||
|
||||
void *rs_state;
|
||||
|
||||
union
|
||||
{
|
||||
void *all[4];
|
||||
void *stage[2][2];
|
||||
struct {
|
||||
void *matrix, *source;
|
||||
void *transpose, *intermediate;
|
||||
} individual;
|
||||
} samplers;
|
||||
void *samplers[2];
|
||||
|
||||
void *matrix_vs, *transpose_vs;
|
||||
void *matrix_fs, *transpose_fs;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue