Lines Matching refs:idct
143 create_mismatch_vert_shader(struct vl_idct *idct)
175 (float)VL_BLOCK_WIDTH / idct->buffer_width,
176 (float)VL_BLOCK_HEIGHT / idct->buffer_height);
182 calc_addr(shader, o_addr, ureg_src(t_tex), ureg_src(t_tex), false, false, idct->buffer_width / 4);
188 return ureg_create_shader_and_destroy(shader, idct->pipe);
192 create_mismatch_frag_shader(struct vl_idct *idct)
218 increment_addr(shader, m[i], addr, false, false, i, idct->buffer_height);
255 return ureg_create_shader_and_destroy(shader, idct->pipe);
259 create_stage1_vert_shader(struct vl_idct *idct)
298 (float)VL_BLOCK_WIDTH / idct->buffer_width,
299 (float)VL_BLOCK_HEIGHT / idct->buffer_height);
309 calc_addr(shader, o_l_addr, ureg_src(t_tex), ureg_src(t_start), false, false, idct->buffer_width / 4);
317 return ureg_create_shader_and_destroy(shader, idct->pipe);
321 create_stage1_frag_shader(struct vl_idct *idct)
334 fragment = MALLOC(idct->nr_of_render_targets * sizeof(struct ureg_dst));
342 for (i = 0; i < idct->nr_of_render_targets; ++i)
354 increment_addr(shader, l[i], l_addr, false, false, i - 2, idct->buffer_height);
364 for (i = 0; i < idct->nr_of_render_targets; ++i) {
367 increment_addr(shader, r, r_addr, true, true, i - (signed)idct->nr_of_render_targets / 2, VL_BLOCK_HEIGHT);
389 return ureg_create_shader_and_destroy(shader, idct->pipe);
393 vl_idct_stage2_vert_shader(struct vl_idct *idct, struct ureg_program *shader,
415 (float)VL_BLOCK_WIDTH / idct->buffer_width,
416 (float)VL_BLOCK_HEIGHT / idct->buffer_height);
420 ureg_imm1f(shader, VL_BLOCK_WIDTH / idct->nr_of_render_targets));
424 calc_addr(shader, o_r_addr, ureg_src(tex), ureg_src(t_start), true, false, idct->buffer_height / 4);
431 vl_idct_stage2_frag_shader(struct vl_idct *idct, struct ureg_program *shader,
463 init_shaders(struct vl_idct *idct)
465 idct->vs_mismatch = create_mismatch_vert_shader(idct);
466 if (!idct->vs_mismatch)
469 idct->fs_mismatch = create_mismatch_frag_shader(idct);
470 if (!idct->fs_mismatch)
473 idct->vs = create_stage1_vert_shader(idct);
474 if (!idct->vs)
477 idct->fs = create_stage1_frag_shader(idct);
478 if (!idct->fs)
484 idct->pipe->delete_vs_state(idct->pipe, idct->vs);
487 idct->pipe->delete_vs_state(idct->pipe, idct->vs_mismatch);
490 idct->pipe->delete_vs_state(idct->pipe, idct->fs);
497 cleanup_shaders(struct vl_idct *idct)
499 idct->pipe->delete_vs_state(idct->pipe, idct->vs_mismatch);
500 idct->pipe->delete_fs_state(idct->pipe, idct->fs_mismatch);
501 idct->pipe->delete_vs_state(idct->pipe, idct->vs);
502 idct->pipe->delete_fs_state(idct->pipe, idct->fs);
506 init_state(struct vl_idct *idct)
513 assert(idct);
522 idct->rs_state = idct->pipe->create_rasterizer_state(idct->pipe, &rs_state);
523 if (!idct->rs_state)
541 idct->blend = idct->pipe->create_blend_state(idct->pipe, &blend);
542 if (!idct->blend)
556 idct->samplers[i] = idct->pipe->create_sampler_state(idct->pipe, &sampler);
557 if (!idct->samplers[i])
565 if (idct->samplers[i])
566 idct->pipe->delete_sampler_state(idct->pipe, idct->samplers[i]);
568 idct->pipe->delete_rasterizer_state(idct->pipe, idct->rs_state);
571 idct->pipe->delete_blend_state(idct->pipe, idct->blend);
578 cleanup_state(struct vl_idct *idct)
583 idct->pipe->delete_sampler_state(idct->pipe, idct->samplers[i]);
585 idct->pipe->delete_rasterizer_state(idct->pipe, idct->rs_state);
586 idct->pipe->delete_blend_state(idct->pipe, idct->blend);
590 init_source(struct vl_idct *idct, struct vl_idct_buffer *buffer)
595 assert(idct && buffer);
607 buffer->fb_state_mismatch.cbufs[0] = idct->pipe->create_surface(idct->pipe, tex, &surf_templ);
631 init_intermediate(struct vl_idct *idct, struct vl_idct_buffer *buffer)
637 assert(idct && buffer);
643 buffer->fb_state.nr_cbufs = idct->nr_of_render_targets;
644 for(i = 0; i < idct->nr_of_render_targets; ++i) {
649 buffer->fb_state.cbufs[i] = idct->pipe->create_surface(
650 idct->pipe, tex, &surf_templ);
667 for(i = 0; i < idct->nr_of_render_targets; ++i)
753 bool vl_idct_init(struct vl_idct *idct, struct pipe_context *pipe,
759 assert(idct && pipe);
762 idct->pipe = pipe;
763 idct->buffer_width = buffer_width;
764 idct->buffer_height = buffer_height;
765 idct->nr_of_render_targets = nr_of_render_targets;
767 pipe_sampler_view_reference(&idct->matrix, matrix);
768 pipe_sampler_view_reference(&idct->transpose, transpose);
770 if(!init_shaders(idct))
773 if(!init_state(idct)) {
774 cleanup_shaders(idct);
782 vl_idct_cleanup(struct vl_idct *idct)
784 cleanup_shaders(idct);
785 cleanup_state(idct);
787 pipe_sampler_view_reference(&idct->matrix, NULL);
788 pipe_sampler_view_reference(&idct->transpose, NULL);
792 vl_idct_init_buffer(struct vl_idct *idct, struct vl_idct_buffer *buffer,
796 assert(buffer && idct);
801 pipe_sampler_view_reference(&buffer->sampler_views.individual.matrix, idct->matrix);
803 pipe_sampler_view_reference(&buffer->sampler_views.individual.transpose, idct->transpose);
806 if (!init_source(idct, buffer))
809 if (!init_intermediate(idct, buffer))
828 vl_idct_flush(struct vl_idct *idct, struct vl_idct_buffer *buffer, unsigned num_instances)
832 idct->pipe->bind_rasterizer_state(idct->pipe, idct->rs_state);
833 idct->pipe->bind_blend_state(idct->pipe, idct->blend);
835 idct->pipe->bind_sampler_states(idct->pipe, PIPE_SHADER_FRAGMENT,
836 0, 2, idct->samplers);
838 idct->pipe->set_sampler_views(idct->pipe, PIPE_SHADER_FRAGMENT, 0, 2, 0,
842 idct->pipe->set_framebuffer_state(idct->pipe, &buffer->fb_state_mismatch);
843 idct->pipe->set_viewport_states(idct->pipe, 0, 1, &buffer->viewport_mismatch);
844 idct->pipe->bind_vs_state(idct->pipe, idct->vs_mismatch);
845 idct->pipe->bind_fs_state(idct->pipe, idct->fs_mismatch);
846 util_draw_arrays_instanced(idct->pipe, PIPE_PRIM_POINTS, 0, 1, 0, num_instances);
849 idct->pipe->set_framebuffer_state(idct->pipe, &buffer->fb_state);
850 idct->pipe->set_viewport_states(idct->pipe, 0, 1, &buffer->viewport);
851 idct->pipe->bind_vs_state(idct->pipe, idct->vs);
852 idct->pipe->bind_fs_state(idct->pipe, idct->fs);
853 util_draw_arrays_instanced(idct->pipe, PIPE_PRIM_QUADS, 0, 4, 0, num_instances);
857 vl_idct_prepare_stage2(struct vl_idct *idct, struct vl_idct_buffer *buffer)
862 idct->pipe->bind_rasterizer_state(idct->pipe, idct->rs_state);
863 idct->pipe->bind_sampler_states(idct->pipe, PIPE_SHADER_FRAGMENT,
864 0, 2, idct->samplers);
865 idct->pipe->set_sampler_views(idct->pipe, PIPE_SHADER_FRAGMENT,