1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright 2023 Valve Corporation 3*61046927SAndroid Build Coastguard Worker * Copyright 2021 Collabora Ltd. 4*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT 5*61046927SAndroid Build Coastguard Worker */ 6*61046927SAndroid Build Coastguard Worker 7*61046927SAndroid Build Coastguard Worker #include "vk_blend.h" 8*61046927SAndroid Build Coastguard Worker #include "util/macros.h" 9*61046927SAndroid Build Coastguard Worker 10*61046927SAndroid Build Coastguard Worker enum pipe_logicop vk_logic_op_to_pipe(VkLogicOp in)11*61046927SAndroid Build Coastguard Workervk_logic_op_to_pipe(VkLogicOp in) 12*61046927SAndroid Build Coastguard Worker { 13*61046927SAndroid Build Coastguard Worker switch (in) { 14*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_CLEAR: 15*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_CLEAR; 16*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_AND: 17*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_AND; 18*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_AND_REVERSE: 19*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_AND_REVERSE; 20*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_COPY: 21*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_COPY; 22*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_AND_INVERTED: 23*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_AND_INVERTED; 24*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_NO_OP: 25*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_NOOP; 26*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_XOR: 27*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_XOR; 28*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_OR: 29*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_OR; 30*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_NOR: 31*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_NOR; 32*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_EQUIVALENT: 33*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_EQUIV; 34*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_INVERT: 35*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_INVERT; 36*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_OR_REVERSE: 37*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_OR_REVERSE; 38*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_COPY_INVERTED: 39*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_COPY_INVERTED; 40*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_OR_INVERTED: 41*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_OR_INVERTED; 42*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_NAND: 43*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_NAND; 44*61046927SAndroid Build Coastguard Worker case VK_LOGIC_OP_SET: 45*61046927SAndroid Build Coastguard Worker return PIPE_LOGICOP_SET; 46*61046927SAndroid Build Coastguard Worker default: 47*61046927SAndroid Build Coastguard Worker unreachable("Invalid logicop"); 48*61046927SAndroid Build Coastguard Worker } 49*61046927SAndroid Build Coastguard Worker } 50*61046927SAndroid Build Coastguard Worker 51*61046927SAndroid Build Coastguard Worker enum pipe_blend_func vk_blend_op_to_pipe(VkBlendOp in)52*61046927SAndroid Build Coastguard Workervk_blend_op_to_pipe(VkBlendOp in) 53*61046927SAndroid Build Coastguard Worker { 54*61046927SAndroid Build Coastguard Worker switch (in) { 55*61046927SAndroid Build Coastguard Worker case VK_BLEND_OP_ADD: 56*61046927SAndroid Build Coastguard Worker return PIPE_BLEND_ADD; 57*61046927SAndroid Build Coastguard Worker case VK_BLEND_OP_SUBTRACT: 58*61046927SAndroid Build Coastguard Worker return PIPE_BLEND_SUBTRACT; 59*61046927SAndroid Build Coastguard Worker case VK_BLEND_OP_REVERSE_SUBTRACT: 60*61046927SAndroid Build Coastguard Worker return PIPE_BLEND_REVERSE_SUBTRACT; 61*61046927SAndroid Build Coastguard Worker case VK_BLEND_OP_MIN: 62*61046927SAndroid Build Coastguard Worker return PIPE_BLEND_MIN; 63*61046927SAndroid Build Coastguard Worker case VK_BLEND_OP_MAX: 64*61046927SAndroid Build Coastguard Worker return PIPE_BLEND_MAX; 65*61046927SAndroid Build Coastguard Worker default: 66*61046927SAndroid Build Coastguard Worker unreachable("Invalid blend op"); 67*61046927SAndroid Build Coastguard Worker } 68*61046927SAndroid Build Coastguard Worker } 69*61046927SAndroid Build Coastguard Worker 70*61046927SAndroid Build Coastguard Worker enum pipe_blendfactor vk_blend_factor_to_pipe(enum VkBlendFactor vk_factor)71*61046927SAndroid Build Coastguard Workervk_blend_factor_to_pipe(enum VkBlendFactor vk_factor) 72*61046927SAndroid Build Coastguard Worker { 73*61046927SAndroid Build Coastguard Worker switch (vk_factor) { 74*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_ZERO: 75*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_ZERO; 76*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_ONE: 77*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_ONE; 78*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_SRC_COLOR: 79*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_SRC_COLOR; 80*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR: 81*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_INV_SRC_COLOR; 82*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_DST_COLOR: 83*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_DST_COLOR; 84*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR: 85*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_INV_DST_COLOR; 86*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_SRC_ALPHA: 87*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_SRC_ALPHA; 88*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA: 89*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_INV_SRC_ALPHA; 90*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_DST_ALPHA: 91*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_DST_ALPHA; 92*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA: 93*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_INV_DST_ALPHA; 94*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_CONSTANT_COLOR: 95*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_CONST_COLOR; 96*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR: 97*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_INV_CONST_COLOR; 98*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_CONSTANT_ALPHA: 99*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_CONST_ALPHA; 100*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA: 101*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_INV_CONST_ALPHA; 102*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_SRC1_COLOR: 103*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_SRC1_COLOR; 104*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR: 105*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_INV_SRC1_COLOR; 106*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_SRC1_ALPHA: 107*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_SRC1_ALPHA; 108*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA: 109*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_INV_SRC1_ALPHA; 110*61046927SAndroid Build Coastguard Worker case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE: 111*61046927SAndroid Build Coastguard Worker return PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE; 112*61046927SAndroid Build Coastguard Worker default: 113*61046927SAndroid Build Coastguard Worker unreachable("Invalid blend factor"); 114*61046927SAndroid Build Coastguard Worker } 115*61046927SAndroid Build Coastguard Worker } 116