X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fsvga%2Fsvga_tgsi.h;h=207a3f0a8457dd1034349f2ada8b888a8f8c2bff;hb=e054251ed11e25a080f64b92db9334c9b07c8c76;hp=737a2213af5c8e9b7f39da50f2250d43037b995b;hpb=080c40ab32b2abd6d8381b4a0cc143d36a1652b2;p=mesa.git diff --git a/src/gallium/drivers/svga/svga_tgsi.h b/src/gallium/drivers/svga/svga_tgsi.h index 737a2213af5..207a3f0a845 100644 --- a/src/gallium/drivers/svga/svga_tgsi.h +++ b/src/gallium/drivers/svga/svga_tgsi.h @@ -26,66 +26,16 @@ #ifndef SVGA_TGSI_H #define SVGA_TGSI_H -#include "pipe/p_state.h" +#include "pipe/p_compiler.h" +#include "svga3d_reg.h" -#include "svga_hw_reg.h" -struct svga_fragment_shader; -struct svga_vertex_shader; -struct svga_shader; -struct tgsi_shader_info; -struct tgsi_token; - - -struct svga_vs_compile_key -{ - unsigned zero_stride_vertex_elements; - unsigned need_prescale:1; - unsigned allow_psiz:1; - unsigned num_zero_stride_vertex_elements:6; -}; - -struct svga_fs_compile_key -{ - unsigned light_twoside:1; - unsigned front_cw:1; - unsigned num_textures:8; - unsigned num_unnormalized_coords:8; - struct { - unsigned compare_mode:1; - unsigned compare_func:3; - unsigned unnormalized:1; - unsigned width_height_idx:7; - unsigned texture_target:8; - } tex[PIPE_MAX_SAMPLERS]; -}; - -union svga_compile_key { - struct svga_vs_compile_key vkey; - struct svga_fs_compile_key fkey; -}; - -struct svga_shader_result -{ - const struct svga_shader *shader; - - /* Parameters used to generate this compilation result: - */ - union svga_compile_key key; +#define MAX_VGPU10_ADDR_REGS 2 - /* Compiled shader tokens: - */ - const unsigned *tokens; - unsigned nr_tokens; - - /* SVGA Shader ID: - */ - unsigned id; - - /* Next compilation result: - */ - struct svga_shader_result *next; -}; +struct svga_compile_key; +struct svga_context; +struct svga_shader; +struct svga_shader_variant; /* TGSI doesn't provide use with VS input semantics (they're actually @@ -96,7 +46,7 @@ struct svga_shader_result * The real use of this information is matching vertex elements to * fragment shader inputs in the case where vertex shader is disabled. */ -static INLINE void svga_generate_vdecl_semantics( unsigned idx, +static inline void svga_generate_vdecl_semantics( unsigned idx, unsigned *usage, unsigned *usage_index ) { @@ -112,25 +62,16 @@ static INLINE void svga_generate_vdecl_semantics( unsigned idx, -static INLINE unsigned svga_vs_key_size( const struct svga_vs_compile_key *key ) -{ - return sizeof *key; -} - -static INLINE unsigned svga_fs_key_size( const struct svga_fs_compile_key *key ) -{ - return (const char *)&key->tex[key->num_textures] - (const char *)key; -} - -struct svga_shader_result * -svga_translate_fragment_program( const struct svga_fragment_shader *fs, - const struct svga_fs_compile_key *fkey ); - -struct svga_shader_result * -svga_translate_vertex_program( const struct svga_vertex_shader *fs, - const struct svga_vs_compile_key *vkey ); +struct svga_shader_variant * +svga_tgsi_vgpu9_translate(const struct svga_shader *shader, + const struct svga_compile_key *key, unsigned unit); +struct svga_shader_variant * +svga_tgsi_vgpu10_translate(struct svga_context *svga, + const struct svga_shader *shader, + const struct svga_compile_key *key, + unsigned unit); -void svga_destroy_shader_result( struct svga_shader_result *result ); +boolean svga_shader_verify(const uint32_t *tokens, unsigned nr_tokens); #endif