"Fossies" - the Fresh Open Source Software Archive

Member "mesa-20.1.8/src/gallium/drivers/llvmpipe/lp_bld_blend.h" (16 Sep 2020, 3555 Bytes) of package /linux/misc/mesa-20.1.8.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "lp_bld_blend.h" see the Fossies "Dox" file reference documentation.

    1 /**************************************************************************
    2  *
    3  * Copyright 2009 VMware, Inc.
    4  * All Rights Reserved.
    5  *
    6  * Permission is hereby granted, free of charge, to any person obtaining a
    7  * copy of this software and associated documentation files (the
    8  * "Software"), to deal in the Software without restriction, including
    9  * without limitation the rights to use, copy, modify, merge, publish,
   10  * distribute, sub license, and/or sell copies of the Software, and to
   11  * permit persons to whom the Software is furnished to do so, subject to
   12  * the following conditions:
   13  *
   14  * The above copyright notice and this permission notice (including the
   15  * next paragraph) shall be included in all copies or substantial portions
   16  * of the Software.
   17  *
   18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   19  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   20  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
   21  * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
   22  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   23  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   24  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   25  *
   26  **************************************************************************/
   27 
   28 #ifndef LP_BLD_BLEND_H
   29 #define LP_BLD_BLEND_H
   30 
   31 
   32 #include "gallivm/lp_bld.h"
   33 #include "gallivm/lp_bld_init.h"
   34  
   35 #include "pipe/p_format.h"
   36 
   37 
   38 struct pipe_blend_state;
   39 struct lp_type;
   40 struct lp_build_context;
   41 struct lp_build_mask_context;
   42 
   43 
   44 LLVMValueRef
   45 lp_build_blend(struct lp_build_context *bld,
   46                unsigned func,
   47                unsigned factor_src,
   48                unsigned factor_dst,
   49                LLVMValueRef src,
   50                LLVMValueRef dst,
   51                LLVMValueRef src_factor,
   52                LLVMValueRef dst_factor,
   53                boolean not_alpha_dependent,
   54                boolean optimise_only);
   55 
   56 
   57 LLVMValueRef
   58 lp_build_blend_aos(struct gallivm_state *gallivm,
   59                    const struct pipe_blend_state *blend,
   60                    enum pipe_format cbuf_format,
   61                    struct lp_type type,
   62                    unsigned rt,
   63                    LLVMValueRef src,
   64                    LLVMValueRef src_alpha,
   65                    LLVMValueRef src1,
   66                    LLVMValueRef src1_alpha,
   67                    LLVMValueRef dst,
   68                    LLVMValueRef mask,
   69                    LLVMValueRef const_,
   70                    LLVMValueRef const_alpha,
   71                    const unsigned char swizzle[4],
   72                    int nr_channels);
   73 
   74 
   75 /**
   76  * Apply a logic op.
   77  *
   78  * src/dst parameters are packed values. It should work regardless the inputs
   79  * are scalars, or a vector.
   80  */
   81 LLVMValueRef
   82 lp_build_logicop(LLVMBuilderRef builder,
   83                  unsigned logicop_func,
   84                  LLVMValueRef src,
   85                  LLVMValueRef dst);
   86 
   87 
   88 LLVMValueRef
   89 lp_build_blend_func(struct lp_build_context *bld,
   90                     unsigned func,
   91                     LLVMValueRef term1,
   92                     LLVMValueRef term2);
   93 
   94 
   95 boolean
   96 lp_build_blend_func_reverse(unsigned rgb_func,
   97                             unsigned alpha_func);
   98 
   99 
  100 boolean
  101 lp_build_blend_func_commutative(unsigned func);
  102 
  103 void
  104 lp_build_alpha_to_coverage(struct gallivm_state *gallivm,
  105                            struct lp_type type,
  106                            struct lp_build_mask_context *mask,
  107                            LLVMValueRef alpha,
  108                            boolean do_branch);
  109 
  110 #endif /* !LP_BLD_BLEND_H */