"Fossies" - the Fresh Open Source Software Archive

Member "mesa-20.1.8/src/amd/common/ac_shader_args.c" (16 Sep 2020, 1897 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 "ac_shader_args.c" see the Fossies "Dox" file reference documentation.

    1 /*
    2  * Copyright 2019 Valve Corporation
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * on the rights to use, copy, modify, merge, publish, distribute, sub
    8  * license, and/or sell copies of the Software, and to permit persons to whom
    9  * the Software is furnished to do so, subject to the following conditions:
   10  *
   11  * The above copyright notice and this permission notice (including the next
   12  * paragraph) shall be included in all copies or substantial portions of the
   13  * Software.
   14  *
   15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   17  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
   18  * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
   19  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
   20  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
   21  * USE OR OTHER DEALINGS IN THE SOFTWARE.
   22  */
   23 
   24 #include "ac_shader_args.h"
   25 #include "nir/nir_builder.h"
   26 
   27 void
   28 ac_add_arg(struct ac_shader_args *info, enum ac_arg_regfile regfile,
   29        unsigned size, enum ac_arg_type type, struct ac_arg *arg)
   30 {
   31     assert(info->arg_count < AC_MAX_ARGS);
   32 
   33     unsigned offset;
   34     if (regfile == AC_ARG_SGPR) {
   35         offset = info->num_sgprs_used;
   36         info->num_sgprs_used += size;
   37     } else {
   38         assert(regfile == AC_ARG_VGPR);
   39         offset = info->num_vgprs_used;
   40         info->num_vgprs_used += size;
   41     }
   42 
   43     info->args[info->arg_count].file = regfile;
   44     info->args[info->arg_count].offset = offset;
   45     info->args[info->arg_count].size = size;
   46     info->args[info->arg_count].type = type;
   47 
   48     if (arg) {
   49         arg->arg_index = info->arg_count;
   50         arg->used = true;
   51     }
   52 
   53     info->arg_count++;
   54 }
   55