161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu/* 261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * Mesa 3-D graphics library 361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * 461fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * Copyright (C) 2015 LunarG, Inc. 561fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * 661fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * Permission is hereby granted, free of charge, to any person obtaining a 761fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * copy of this software and associated documentation files (the "Software"), 861fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * to deal in the Software without restriction, including without limitation 961fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * the rights to use, copy, modify, merge, publish, distribute, sublicense, 1061fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * and/or sell copies of the Software, and to permit persons to whom the 1161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * Software is furnished to do so, subject to the following conditions: 1261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * 1361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * The above copyright notice and this permission notice shall be included 1461fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * in all copies or substantial portions of the Software. 1561fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * 1661fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1761fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1861fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1961fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2061fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 2161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 2261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * DEALINGS IN THE SOFTWARE. 2361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * 2461fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * Authors: 2561fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu * Chia-I Wu <olv@lunarg.com> 2661fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu */ 2761fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 2861fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu#ifndef ILO_STATE_SAMPLER_H 2961fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu#define ILO_STATE_SAMPLER_H 3061fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 3161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu#include "genhw/genhw.h" 3261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 3361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu#include "ilo_core.h" 3461fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu#include "ilo_dev.h" 3561fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 3661fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wustruct ilo_state_surface; 3761fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 3861fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wustruct ilo_state_sampler_info { 3961fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu bool non_normalized; 4061fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 4161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu float lod_bias; 4261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu float min_lod; 4361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu float max_lod; 4461fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 4561fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu enum gen_mip_filter mip_filter; 4661fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu enum gen_map_filter min_filter; 4761fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu enum gen_map_filter mag_filter; 4861fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu enum gen_aniso_ratio max_anisotropy; 4961fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 5061fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu enum gen_texcoord_mode tcx_ctrl; 5161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu enum gen_texcoord_mode tcy_ctrl; 5261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu enum gen_texcoord_mode tcz_ctrl; 5361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 5461fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu enum gen_prefilter_op shadow_func; 5561fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu}; 5661fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 5761fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wustruct ilo_state_sampler_border_info { 5861fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu union { 5961fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu float f[4]; 6061fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu uint32_t ui[4]; 6161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu } rgba; 6261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 6361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu bool is_integer; 6461fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu}; 6561fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 6661fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wustruct ilo_state_sampler { 6761fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu uint32_t sampler[3]; 6861fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 6961fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu uint32_t filter_integer; 7061fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu uint32_t filter_3d; 7161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 7261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu uint32_t addr_ctrl_1d; 7361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu uint32_t addr_ctrl_2d_3d; 7461fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu uint32_t addr_ctrl_cube; 7561fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 7661fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu bool non_normalized; 7761fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu bool base_to_surf_min_lod; 7861fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu}; 7961fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 8061fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wustruct ilo_state_sampler_border { 8161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu uint32_t color[12]; 8261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu}; 8361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 8461fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wubool 8561fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wuilo_state_sampler_init(struct ilo_state_sampler *sampler, 8661fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu const struct ilo_dev *dev, 8761fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu const struct ilo_state_sampler_info *info); 8861fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 8961fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wubool 9061fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wuilo_state_sampler_init_disabled(struct ilo_state_sampler *sampler, 9161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu const struct ilo_dev *dev); 9261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 9361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wubool 9461fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wuilo_state_sampler_set_surface(struct ilo_state_sampler *sampler, 9561fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu const struct ilo_dev *dev, 9661fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu const struct ilo_state_surface *surf); 9761fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 9861fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wubool 9961fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wuilo_state_sampler_border_init(struct ilo_state_sampler_border *border, 10061fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu const struct ilo_dev *dev, 10161fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu const struct ilo_state_sampler_border_info *info); 10261fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu 10361fea171af64288bdf622e7ecf07e3ca42f83974Chia-I Wu#endif /* ILO_STATE_SAMPLER_H */ 104