/*
* QEMU Geforce NV2A pixel shader translation
*
* Copyright (c) 2013 espes
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see .
*/
#ifndef HW_NV2A_PSH_H
#define HW_NV2A_PSH_H
#include
#include
enum PshAlphaFunc {
ALPHA_FUNC_NEVER,
ALPHA_FUNC_LESS,
ALPHA_FUNC_EQUAL,
ALPHA_FUNC_LEQUAL,
ALPHA_FUNC_GREATER,
ALPHA_FUNC_NOTEQUAL,
ALPHA_FUNC_GEQUAL,
ALPHA_FUNC_ALWAYS,
};
enum PshShadowDepthFunc {
SHADOW_DEPTH_FUNC_NEVER,
SHADOW_DEPTH_FUNC_LESS,
SHADOW_DEPTH_FUNC_EQUAL,
SHADOW_DEPTH_FUNC_LEQUAL,
SHADOW_DEPTH_FUNC_GREATER,
SHADOW_DEPTH_FUNC_NOTEQUAL,
SHADOW_DEPTH_FUNC_GEQUAL,
SHADOW_DEPTH_FUNC_ALWAYS,
};
enum ConvolutionFilter {
CONVOLUTION_FILTER_DISABLED,
CONVOLUTION_FILTER_QUINCUNX,
CONVOLUTION_FILTER_GAUSSIAN,
};
typedef struct PshState {
bool vulkan;
/* fragment shader - register combiner stuff */
uint32_t combiner_control;
uint32_t shader_stage_program;
uint32_t other_stage_input;
uint32_t final_inputs_0;
uint32_t final_inputs_1;
uint32_t rgb_inputs[8], rgb_outputs[8];
uint32_t alpha_inputs[8], alpha_outputs[8];
bool point_sprite;
bool rect_tex[4];
bool snorm_tex[4];
bool compare_mode[4][4];
bool alphakill[4];
enum ConvolutionFilter conv_tex[4];
bool tex_x8y24[4];
int dim_tex[4];
float border_logical_size[4][3];
float border_inv_real_size[4][3];
bool shadow_map[4];
enum PshShadowDepthFunc shadow_depth_func;
bool alpha_test;
enum PshAlphaFunc alpha_func;
bool window_clip_exclusive;
bool smooth_shading;
bool depth_clipping;
bool z_perspective;
} PshState;
#endif