On Die, 2013-09-03 at 15:23 +0200, Marek Olšák wrote: > The shader is responsible for writing to streamout buffers using > the TBUFFER_STORE_FORMAT_* instructions. > > The locations of some input SGPRs and VGPRs are assigned dynamically, because > the input SGPRs controlling streamout are not declared if they are not needed, > decreasing the indices of all following inputs. > --- > src/gallium/drivers/radeonsi/radeonsi_shader.c | 279 > ++++++++++++++++++++++++- > src/gallium/drivers/radeonsi/radeonsi_shader.h | 5 +- > src/gallium/drivers/radeonsi/si_state_draw.c | 7 +- > 3 files changed, 276 insertions(+), 15 deletions(-) > > diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c > b/src/gallium/drivers/radeonsi/radeonsi_shader.c > index 335cd79..92f7cf5 100644 > --- a/src/gallium/drivers/radeonsi/radeonsi_shader.c > +++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c
[...] > + /* Pack the output. */ > + LLVMValueRef vdata; > + > + switch (num_comps) { > + case 1: /* as i32 */ > + vdata = out[0]; > + break; > + case 2: /* as v2i32 */ > + case 3: /* as v4i32 (aligned to 4) */ > + case 4: /* as v4i32 */ > + vdata = LLVMGetUndef(LLVMVectorType(i32, > util_next_power_of_two(num_comps))); > + for (j = 0; j < num_comps; j++) { > + vdata = LLVMBuildInsertElement(builder, > vdata, out[j], > + > LLVMConstInt(i32, j, 0), ""); > + } > + break; > + } This introduces a warning: .../radeonsi_shader.c: In function 'si_llvm_emit_epilogue': .../radeonsi_shader.c:708:15: warning: 'vdata' may be used uninitialized in this function [-Wmaybe-uninitialized] LLVMValueRef args[] = { ^ .../radeonsi_shader.c:840:17: note: 'vdata' was declared here LLVMValueRef vdata; ^ Other than that, the series looks good to me. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Debian, X and DRI developer _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev