Home | History | Annotate | Download | only in vl

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)
336 fragment = MALLOC(idct->nr_of_render_targets * sizeof(struct ureg_dst));
344 for (i = 0; i < idct->nr_of_render_targets; ++i)
356 increment_addr(shader, l[i], l_addr, false, false, i - 2, idct->buffer_height);
366 for (i = 0; i < idct->nr_of_render_targets; ++i) {
369 increment_addr(shader, r, r_addr, true, true, i - (signed)idct->nr_of_render_targets / 2, VL_BLOCK_HEIGHT);
391 return ureg_create_shader_and_destroy(shader, idct->pipe);
395 vl_idct_stage2_vert_shader(struct vl_idct *idct, struct ureg_program *shader,
417 (float)VL_BLOCK_WIDTH / idct->buffer_width,
418 (float)VL_BLOCK_HEIGHT / idct->buffer_height);
422 ureg_imm1f(shader, VL_BLOCK_WIDTH / idct->nr_of_render_targets));
426 calc_addr(shader, o_r_addr, ureg_src(tex), ureg_src(t_start), true, false, idct->buffer_height / 4);
433 vl_idct_stage2_frag_shader(struct vl_idct *idct, struct ureg_program *shader,
465 init_shaders(struct vl_idct *idct)
467 idct->vs_mismatch = create_mismatch_vert_shader(idct);
468 if (!idct->vs_mismatch)
471 idct->fs_mismatch = create_mismatch_frag_shader(idct);
472 if (!idct->fs_mismatch)
475 idct->vs = create_stage1_vert_shader(idct);
476 if (!idct->vs)
479 idct->fs = create_stage1_frag_shader(idct);
480 if (!idct->fs)
486 idct->pipe->delete_vs_state(idct->pipe, idct->vs);
489 idct->pipe->delete_vs_state(idct->pipe, idct->vs_mismatch);
492 idct->pipe->delete_vs_state(idct->pipe, idct->fs);
499 cleanup_shaders(struct vl_idct *idct)
501 idct->pipe->delete_vs_state(idct->pipe, idct->vs_mismatch);
502 idct->pipe->delete_fs_state(idct->pipe, idct->fs_mismatch);
503 idct->pipe->delete_vs_state(idct->pipe, idct->vs);
504 idct->pipe->delete_fs_state(idct->pipe, idct->fs);
508 init_state(struct vl_idct *idct)
515 assert(idct);
521 idct->rs_state = idct->pipe->create_rasterizer_state(idct->pipe, &rs_state);
522 if (!idct->rs_state)
540 idct->blend = idct->pipe->create_blend_state(idct->pipe, &blend);
541 if (!idct->blend)
555 idct->samplers[i] = idct->pipe->create_sampler_state(idct->pipe, &sampler);
556 if (!idct->samplers[i])
564 if (idct->samplers[i])
565 idct->pipe->delete_sampler_state(idct->pipe, idct->samplers[i]);
567 idct->pipe->delete_rasterizer_state(idct->pipe, idct->rs_state);
570 idct->pipe->delete_blend_state(idct->pipe, idct->blend);
577 cleanup_state(struct vl_idct *idct)
582 idct->pipe->delete_sampler_state(idct->pipe, idct->samplers[i]);
584 idct->pipe->delete_rasterizer_state(idct->pipe, idct->rs_state);
585 idct->pipe->delete_blend_state(idct->pipe, idct->blend);
589 init_source(struct vl_idct *idct, struct vl_idct_buffer *buffer)
594 assert(idct && buffer);
607 buffer->fb_state_mismatch.cbufs[0] = idct->pipe->create_surface(idct->pipe, tex, &surf_templ);
628 init_intermediate(struct vl_idct *idct, struct vl_idct_buffer *buffer)
634 assert(idct && buffer);
640 buffer->fb_state.nr_cbufs = idct->nr_of_render_targets;
641 for(i = 0; i < idct->nr_of_render_targets; ++i) {
647 buffer->fb_state.cbufs[i] = idct->pipe->create_surface(
648 idct->pipe, tex, &surf_templ);
662 for(i = 0; i < idct->nr_of_render_targets; ++i)
758 bool vl_idct_init(struct vl_idct *idct, struct pipe_context *pipe,
764 assert(idct && pipe);
767 idct->pipe = pipe;
768 idct->buffer_width = buffer_width;
769 idct->buffer_height = buffer_height;
770 idct->nr_of_render_targets = nr_of_render_targets;
772 pipe_sampler_view_reference(&idct->matrix, matrix);
773 pipe_sampler_view_reference(&idct->transpose, transpose);
775 if(!init_shaders(idct))
778 if(!init_state(idct)) {
779 cleanup_shaders(idct);
787 vl_idct_cleanup(struct vl_idct *idct)
789 cleanup_shaders(idct);
790 cleanup_state(idct);
792 pipe_sampler_view_reference(&idct->matrix, NULL);
793 pipe_sampler_view_reference(&idct->transpose, NULL);
797 vl_idct_init_buffer(struct vl_idct *idct, struct vl_idct_buffer *buffer,
801 assert(buffer && idct);
806 pipe_sampler_view_reference(&buffer->sampler_views.individual.matrix, idct->matrix);
808 pipe_sampler_view_reference(&buffer->sampler_views.individual.transpose, idct->transpose);
811 if (!init_source(idct, buffer))
814 if (!init_intermediate(idct, buffer))
833 vl_idct_flush(struct vl_idct *idct, struct vl_idct_buffer *buffer, unsigned num_instances)
837 idct->pipe->bind_rasterizer_state(idct->pipe, idct->rs_state);
838 idct->pipe->bind_blend_state(idct->pipe, idct->blend);
839 idct->pipe->bind_fragment_sampler_states(idct->pipe, 2, idct->samplers);
840 idct->pipe->set_fragment_sampler_views(idct->pipe, 2, buffer->sampler_views.stage[0]);
843 idct->pipe->set_framebuffer_state(idct->pipe, &buffer->fb_state_mismatch);
844 idct->pipe->set_viewport_state(idct->pipe, &buffer->viewport_mismatch);
845 idct->pipe->bind_vs_state(idct->pipe, idct->vs_mismatch);
846 idct->pipe->bind_fs_state(idct->pipe, idct->fs_mismatch);
847 util_draw_arrays_instanced(idct->pipe, PIPE_PRIM_POINTS, 0, 1, 0, num_instances);
850 idct->pipe->set_framebuffer_state(idct->pipe, &buffer->fb_state);
851 idct->pipe->set_viewport_state(idct->pipe, &buffer->viewport);
852 idct->pipe->bind_vs_state(idct->pipe, idct->vs);
853 idct->pipe->bind_fs_state(idct->pipe, idct->fs);
854 util_draw_arrays_instanced(idct->pipe, PIPE_PRIM_QUADS, 0, 4, 0, num_instances);
858 vl_idct_prepare_stage2(struct vl_idct *idct, struct vl_idct_buffer *buffer)
863 idct->pipe->bind_rasterizer_state(idct->pipe, idct->rs_state);
864 idct->pipe->bind_fragment_sampler_states(idct->pipe, 2, idct->samplers);
865 idct->pipe->set_fragment_sampler_views(idct->pipe, 2, buffer->sampler_views.stage[1]);