Browse Source

radeonsi: calculate ESGS_RING_ITEMSIZE in create_shader

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
tags/11.1-branchpoint
Marek Olšák 10 years ago
parent
commit
4acd856088

+ 1
- 0
src/gallium/drivers/radeonsi/si_shader.h View File

bool forces_persample_interp_for_persp; bool forces_persample_interp_for_persp;
bool forces_persample_interp_for_linear; bool forces_persample_interp_for_linear;


unsigned esgs_itemsize;
unsigned gs_output_prim; unsigned gs_output_prim;
unsigned gs_max_out_vertices; unsigned gs_max_out_vertices;
unsigned gs_num_invocations; unsigned gs_num_invocations;

+ 2
- 1
src/gallium/drivers/radeonsi/si_state_shaders.c View File

si_pm4_set_reg(pm4, R_028A68_VGT_GSVS_RING_OFFSET_3, gsvs_itemsize * ((max_stream >= 3) ? 3 : 1)); si_pm4_set_reg(pm4, R_028A68_VGT_GSVS_RING_OFFSET_3, gsvs_itemsize * ((max_stream >= 3) ? 3 : 1));


si_pm4_set_reg(pm4, R_028AAC_VGT_ESGS_RING_ITEMSIZE, si_pm4_set_reg(pm4, R_028AAC_VGT_ESGS_RING_ITEMSIZE,
util_bitcount64(shader->selector->inputs_read) * (16 >> 2));
shader->selector->esgs_itemsize / 4);
si_pm4_set_reg(pm4, R_028AB0_VGT_GSVS_RING_ITEMSIZE, gsvs_itemsize * (max_stream + 1)); si_pm4_set_reg(pm4, R_028AB0_VGT_GSVS_RING_ITEMSIZE, gsvs_itemsize * (max_stream + 1));


si_pm4_set_reg(pm4, R_028B38_VGT_GS_MAX_VERT_OUT, gs_max_vert_out); si_pm4_set_reg(pm4, R_028B38_VGT_GS_MAX_VERT_OUT, gs_max_vert_out);
1llu << si_shader_io_get_unique_index(name, index); 1llu << si_shader_io_get_unique_index(name, index);
} }
} }
sel->esgs_itemsize = util_last_bit64(sel->outputs_written) * 16;
break; break;
case PIPE_SHADER_FRAGMENT: case PIPE_SHADER_FRAGMENT:
for (i = 0; i < sel->info.num_outputs; i++) { for (i = 0; i < sel->info.num_outputs; i++) {

Loading…
Cancel
Save