[Mesa-dev] [PATCH 1/3] draw: draw_get_shader_param should return correct values WRT llvm
Marek Olšák
maraeo at gmail.com
Wed Jul 4 04:59:44 PDT 2012
Please disregard patch 1 and 2. It wouldn't work. I still plan to
commit patch 3.
Marek
On Wed, Jul 4, 2012 at 2:35 AM, Marek Olšák <maraeo at gmail.com> wrote:
> ---
> src/gallium/auxiliary/draw/draw_context.c | 34 ++++++++++++++++++++++++++--
> src/gallium/auxiliary/draw/draw_context.h | 13 +---------
> 2 files changed, 33 insertions(+), 14 deletions(-)
>
> diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c
> index 2eae204..b1501c7 100644
> --- a/src/gallium/auxiliary/draw/draw_context.c
> +++ b/src/gallium/auxiliary/draw/draw_context.c
> @@ -43,10 +43,12 @@
> #if HAVE_LLVM
> #include "gallivm/lp_bld_init.h"
> #include "draw_llvm.h"
> +#endif
>
> static boolean
> -draw_get_option_use_llvm(void)
> +draw_can_use_llvm(void)
> {
> +#if HAVE_LLVM
> static boolean first = TRUE;
> static boolean value;
> if (first) {
> @@ -61,8 +63,10 @@ draw_get_option_use_llvm(void)
> #endif
> }
> return value;
> -}
> +#else
> + return FALSE;
> #endif
> +}
>
>
> /**
> @@ -77,7 +81,7 @@ draw_create_context(struct pipe_context *pipe, boolean try_llvm,
> goto err_out;
>
> #if HAVE_LLVM
> - if (try_llvm && draw_get_option_use_llvm()) {
> + if (try_llvm && draw_can_use_llvm()) {
> if (!gallivm) {
> gallivm = gallivm_create();
> draw->own_gallivm = gallivm;
> @@ -830,3 +834,27 @@ draw_set_mapped_texture(struct draw_context *draw,
> row_stride, img_stride, data);
> #endif
> }
> +
> +int
> +draw_get_shader_param(unsigned shader, enum pipe_shader_cap param)
> +{
> + switch(shader) {
> + case PIPE_SHADER_VERTEX:
> + case PIPE_SHADER_GEOMETRY:
> + if (draw_can_use_llvm()) {
> + /* XXX No idea what should be here. I only know it cannot do
> + * integers: */
> + switch (param) {
> + case PIPE_SHADER_CAP_INTEGERS:
> + return 0;
> + default:
> + return tgsi_exec_get_shader_param(param);
> + }
> + }
> + else {
> + return tgsi_exec_get_shader_param(param);
> + }
> + default:
> + return 0;
> + }
> +}
> diff --git a/src/gallium/auxiliary/draw/draw_context.h b/src/gallium/auxiliary/draw/draw_context.h
> index 4cd0caf..01b82e5 100644
> --- a/src/gallium/auxiliary/draw/draw_context.h
> +++ b/src/gallium/auxiliary/draw/draw_context.h
> @@ -277,16 +277,7 @@ boolean draw_need_pipeline(const struct draw_context *draw,
> const struct pipe_rasterizer_state *rasterizer,
> unsigned prim );
>
> -static INLINE int
> -draw_get_shader_param(unsigned shader, enum pipe_shader_cap param)
> -{
> - switch(shader) {
> - case PIPE_SHADER_VERTEX:
> - case PIPE_SHADER_GEOMETRY:
> - return tgsi_exec_get_shader_param(param);
> - default:
> - return 0;
> - }
> -}
> +int
> +draw_get_shader_param(unsigned shader, enum pipe_shader_cap param);
>
> #endif /* DRAW_CONTEXT_H */
> --
> 1.7.4.1
>
More information about the mesa-dev
mailing list