Lines Matching defs:shader
430 struct r600_pipe_compute *shader = CALLOC_STRUCT(r600_pipe_compute);
437 shader->ctx = rctx;
438 shader->local_size = cso->req_local_mem;
439 shader->private_size = cso->req_private_mem;
440 shader->input_size = cso->req_input_mem;
442 shader->ir_type = cso->ir_type;
444 if (shader->ir_type == PIPE_SHADER_IR_TGSI ||
445 shader->ir_type == PIPE_SHADER_IR_NIR) {
446 shader->sel = r600_create_shader_state_tokens(ctx, cso->prog, cso->ir_type, PIPE_SHADER_COMPUTE);
448 /* Precompile the shader with the expected shader key, to reduce jank at
449 * draw time. Also produces output for shader-db.
452 r600_shader_select(ctx, shader->sel, &dirty, true);
454 return shader;
459 radeon_shader_binary_init(&shader->binary);
460 r600_elf_read(header->blob, header->num_bytes, &shader->binary);
461 r600_create_shader(&shader->bc, &shader->binary, &use_kill);
464 shader->code_bo = r600_compute_buffer_alloc_vram(rctx->screen,
465 shader->bc.ndw * 4);
467 &rctx->b, shader->code_bo,
470 memcpy(p, shader->bc.bytecode, shader->bc.ndw * 4);
471 rctx->b.ws->buffer_unmap(rctx->b.ws, shader->code_bo->buf);
474 return shader;
480 struct r600_pipe_compute *shader = state;
484 if (!shader)
487 if (shader->ir_type == PIPE_SHADER_IR_TGSI ||
488 shader->ir_type == PIPE_SHADER_IR_NIR) {
489 r600_delete_shader_selector(ctx, shader->sel);
492 radeon_shader_binary_clean(&shader->binary);
493 pipe_resource_reference((struct pipe_resource**)&shader->code_bo, NULL);
494 pipe_resource_reference((struct pipe_resource**)&shader->kernel_param, NULL);
496 r600_destroy_shader(&shader->bc);
498 FREE(shader);
508 rctx->cs_shader_state.shader = (struct r600_pipe_compute *)state;
516 R600_ERR("Failed to select compute shader\n");
519 rctx->cs_shader_state.shader = (struct r600_pipe_compute *)state;
537 struct r600_pipe_compute *shader = rctx->cs_shader_state.shader;
550 if (!shader)
552 if (shader->input_size == 0) {
555 input_size = shader->input_size + 36;
556 if (!shader->kernel_param) {
558 shader->kernel_param = (struct r600_resource *)
565 (struct pipe_resource*)shader->kernel_param,
584 memcpy(kernel_parameters_start, info->input, shader->input_size);
597 (struct pipe_resource*)shader->kernel_param);
599 (struct pipe_resource*)shader->kernel_param);
608 struct r600_pipe_compute *shader = rctx->cs_shader_state.shader;
614 unsigned lds_size = shader->local_size / 4;
616 if (shader->ir_type != PIPE_SHADER_IR_TGSI &&
617 shader->ir_type != PIPE_SHADER_IR_NIR)
618 lds_size += shader->bc.nlds_dw;
743 if (rctx->cs_shader_state.shader->ir_type == PIPE_SHADER_IR_TGSI||
744 rctx->cs_shader_state.shader->ir_type == PIPE_SHADER_IR_NIR) {
745 if (r600_shader_select(&rctx->b.b, rctx->cs_shader_state.shader->sel, &compute_dirty, false)) {
746 R600_ERR("Failed to select compute shader\n");
750 current = rctx->cs_shader_state.shader->sel->current;
757 bool need_buf_const = current->shader.uses_tex_buffers ||
758 current->shader.has_txq_cube_array_z_comp;
800 if (rctx->cs_shader_state.shader->ir_type == PIPE_SHADER_IR_TGSI||
801 rctx->cs_shader_state.shader->ir_type == PIPE_SHADER_IR_NIR) {
814 if (rctx->cs_shader_state.shader->ir_type != PIPE_SHADER_IR_TGSI &&
815 rctx->cs_shader_state.shader->ir_type != PIPE_SHADER_IR_NIR) {
847 /* Emit shader state */
871 if (rctx->cs_shader_state.shader->ir_type == PIPE_SHADER_IR_TGSI ||
872 rctx->cs_shader_state.shader->ir_type == PIPE_SHADER_IR_NIR)
893 struct r600_pipe_compute *shader = state->shader;
899 if (shader->ir_type == PIPE_SHADER_IR_TGSI ||
900 shader->ir_type == PIPE_SHADER_IR_NIR) {
901 code_bo = shader->sel->current->bo;
902 va = shader->sel->current->bo->gpu_address;
903 ngpr = shader->sel->current->shader.bc.ngpr;
904 nstack = shader->sel->current->shader.bc.nstack;
906 code_bo = shader->code_bo;
907 va = shader->code_bo->gpu_address + state->pc;
908 ngpr = shader->bc.ngpr;
909 nstack = shader->bc.nstack;
931 struct r600_pipe_compute *shader = rctx->cs_shader_state.shader;
934 if (shader->ir_type != PIPE_SHADER_IR_TGSI &&
935 shader->ir_type != PIPE_SHADER_IR_NIR) {
938 r600_shader_binary_read_config(&shader->binary, &shader->bc,
974 evergreen_set_rat(rctx->cs_shader_state.shader, i+1,
1034 evergreen_set_rat(rctx->cs_shader_state.shader, 0, pool->bo, 0, pool->size_in_dw * 4);
1041 (struct pipe_resource*)rctx->cs_shader_state.shader->code_bo);
1049 * packet requires that the shader type bit be set, we must initialize all
1164 /* Give the compute shader all the available LDS space.
1166 * shader can allocate. When a shader is executed, we still need to
1209 * to have the loop counter in your shader code. We don't currently use
1211 * shader and use a break instruction to exit loops. However, the