X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fi965%2Fbrw_program.h;h=2e9f12172e4b73c4adbb74303d40aa2273d6e1e9;hp=672777f4e6d742b6bc322c3e2234d2d701db27c5;hb=700bebb958e93f4d472c383de62ced9db8e64bec;hpb=7d560a3861ff30aa9d8ec872cf9cd7d72a980eb2 diff --git a/src/mesa/drivers/dri/i965/brw_program.h b/src/mesa/drivers/dri/i965/brw_program.h index 672777f4e6d..2e9f12172e4 100644 --- a/src/mesa/drivers/dri/i965/brw_program.h +++ b/src/mesa/drivers/dri/i965/brw_program.h @@ -24,66 +24,65 @@ #ifndef BRW_PROGRAM_H #define BRW_PROGRAM_H -enum gen6_gather_sampler_wa { - WA_SIGN = 1, /* whether we need to sign extend */ - WA_8BIT = 2, /* if we have an 8bit format needing wa */ - WA_16BIT = 4, /* if we have a 16bit format needing wa */ -}; - -/** - * Sampler information needed by VS, WM, and GS program cache keys. - */ -struct brw_sampler_prog_key_data { - /** - * EXT_texture_swizzle and DEPTH_TEXTURE_MODE swizzles. - */ - uint16_t swizzles[MAX_SAMPLERS]; - - uint32_t gl_clamp_mask[3]; - - /** - * For RG32F, gather4's channel select is broken. - */ - uint32_t gather_channel_quirk_mask; - - /** - * Whether this sampler uses the compressed multisample surface layout. - */ - uint32_t compressed_multisample_layout_mask; - - /** - * For Sandybridge, which shader w/a we need for gather quirks. - */ - uint8_t gen6_gather_wa[MAX_SAMPLERS]; -}; +#include "compiler/brw_compiler.h" #ifdef __cplusplus extern "C" { #endif +struct brw_context; + +bool brw_do_channel_expressions(struct exec_list *instructions); +bool brw_do_vector_splitting(struct exec_list *instructions); + +struct nir_shader *brw_create_nir(struct brw_context *brw, + const struct gl_shader_program *shader_prog, + struct gl_program *prog, + gl_shader_stage stage, + bool is_scalar); + +void brw_setup_tex_for_precompile(struct brw_context *brw, + struct brw_sampler_prog_key_data *tex, + struct gl_program *prog); + void brw_populate_sampler_prog_key_data(struct gl_context *ctx, const struct gl_program *prog, - unsigned sampler_count, struct brw_sampler_prog_key_data *key); bool brw_debug_recompile_sampler_key(struct brw_context *brw, const struct brw_sampler_prog_key_data *old_key, const struct brw_sampler_prog_key_data *key); -void brw_add_texrect_params(struct gl_program *prog); -void -brw_mark_surface_used(struct brw_stage_prog_data *prog_data, - unsigned surf_index); - -bool -brw_stage_prog_data_compare(const struct brw_stage_prog_data *a, - const struct brw_stage_prog_data *b); +uint32_t +brw_assign_common_binding_table_offsets(const struct gen_device_info *devinfo, + const struct gl_program *prog, + struct brw_stage_prog_data *stage_prog_data, + uint32_t next_binding_table_offset); void brw_stage_prog_data_free(const void *prog_data); void -brw_dump_ir(const char *stage, struct gl_shader_program *shader_prog, - struct gl_shader *shader, struct gl_program *prog); +brw_dump_arb_asm(const char *stage, struct gl_program *prog); + +bool brw_vs_precompile(struct gl_context *ctx, struct gl_program *prog); +bool brw_tcs_precompile(struct gl_context *ctx, + struct gl_shader_program *shader_prog, + struct gl_program *prog); +bool brw_tes_precompile(struct gl_context *ctx, + struct gl_shader_program *shader_prog, + struct gl_program *prog); +bool brw_gs_precompile(struct gl_context *ctx, struct gl_program *prog); +bool brw_fs_precompile(struct gl_context *ctx, struct gl_program *prog); +bool brw_cs_precompile(struct gl_context *ctx, struct gl_program *prog); + +GLboolean brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog); + +void brw_upload_tcs_prog(struct brw_context *brw); +void brw_tcs_populate_key(struct brw_context *brw, + struct brw_tcs_prog_key *key); +void brw_upload_tes_prog(struct brw_context *brw); +void brw_tes_populate_key(struct brw_context *brw, + struct brw_tes_prog_key *key); #ifdef __cplusplus } /* extern "C" */