BTW I remember that somebody said shader outputs (and inputs?) are not indexable in TGSI, but now I added the CAP for it. Should that CAP go away or are we gonna allow it?
Marek On Wed, Nov 10, 2010 at 9:29 PM, Marek Olšák <mar...@gmail.com> wrote: > Required because ATI and NVIDIA DX9 GPUs do not support indirect addressing > of temps, inputs, outputs, and consts (FS-only) or the hw support is so > limited that we cannot use it. > > This should make r300g and possibly nvfx more feature complete. > > Signed-off-by: Marek Olšák <mar...@gmail.com> > --- > src/gallium/include/pipe/p_defines.h | 5 +++++ > src/mesa/state_tracker/st_extensions.c | 9 +++++++++ > 2 files changed, 14 insertions(+), 0 deletions(-) > > diff --git a/src/gallium/include/pipe/p_defines.h > b/src/gallium/include/pipe/p_defines.h > index 53f7b60..6cca301 100644 > --- a/src/gallium/include/pipe/p_defines.h > +++ b/src/gallium/include/pipe/p_defines.h > @@ -483,7 +483,12 @@ enum pipe_shader_cap > PIPE_SHADER_CAP_MAX_TEMPS, > PIPE_SHADER_CAP_MAX_ADDRS, > PIPE_SHADER_CAP_MAX_PREDS, > + /* boolean caps */ > PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED, > + PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR, > + PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR, > + PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR, > + PIPE_SHADER_CAP_INDIRECT_CONST_ADDR, > }; > > /** > diff --git a/src/mesa/state_tracker/st_extensions.c > b/src/mesa/state_tracker/st_extensions.c > index 2720f44..1327491 100644 > --- a/src/mesa/state_tracker/st_extensions.c > +++ b/src/mesa/state_tracker/st_extensions.c > @@ -175,6 +175,15 @@ void st_init_limits(struct st_context *st) > > options->EmitNoCont = !screen->get_shader_param(screen, i, > PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED); > > + options->EmitNoIndirectInput = !screen->get_shader_param(screen, i, > + > PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR); > + options->EmitNoIndirectOutput = !screen->get_shader_param(screen, i, > + > PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR); > + options->EmitNoIndirectTemp = !screen->get_shader_param(screen, i, > + > PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR); > + options->EmitNoIndirectUniform = !screen->get_shader_param(screen, > i, > + > PIPE_SHADER_CAP_INDIRECT_CONST_ADDR); > + > if(options->EmitNoLoops) > options->MaxUnrollIterations = > MIN2(screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_INSTRUCTIONS), > 65536); > } > -- > 1.7.0.4 > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev