X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fpipe%2Fi915simple%2Fi915_context.h;h=dc19b6efeb9e627a9ee54a6fa0541571575cd645;hb=d0bca086ab6d032909e9a429720fea297c536f97;hp=7a73a8d8d0708ee077d92f073751cc23a3f0e1f2;hpb=47fc2c4349746997704a7f81dffadd22363e0ff1;p=mesa.git diff --git a/src/mesa/pipe/i915simple/i915_context.h b/src/mesa/pipe/i915simple/i915_context.h index 7a73a8d8d07..dc19b6efeb9 100644 --- a/src/mesa/pipe/i915simple/i915_context.h +++ b/src/mesa/pipe/i915simple/i915_context.h @@ -30,8 +30,10 @@ #include "pipe/p_context.h" +#include "pipe/p_defines.h" #include "pipe/p_state.h" +#include "pipe/draw/draw_vertex.h" #define I915_TEX_UNITS 8 @@ -74,6 +76,9 @@ #define I915_CACHE_CONSTANTS 5 #define I915_MAX_CACHE 6 +#define I915_MAX_CONSTANT 32 + + struct i915_cache_context; @@ -82,45 +87,104 @@ struct i915_cache_context; */ struct i915_state { - GLuint immediate[I915_MAX_IMMEDIATE]; - GLuint dynamic[I915_MAX_DYNAMIC]; - - GLuint id; /* track lost context events */ + unsigned immediate[I915_MAX_IMMEDIATE]; + unsigned dynamic[I915_MAX_DYNAMIC]; + + float constants[PIPE_SHADER_TYPES][I915_MAX_CONSTANT][4]; + /** number of constants passed in through a constant buffer */ + uint num_user_constants[PIPE_SHADER_TYPES]; + /** user constants, plus extra constants from shader translation */ + uint num_constants[PIPE_SHADER_TYPES]; + + uint *program; + uint program_len; + + /* texture sampler state */ + unsigned sampler[I915_TEX_UNITS][3]; + unsigned sampler_enable_flags; + unsigned sampler_enable_nr; + + /* texture image buffers */ + unsigned texbuffer[I915_TEX_UNITS][2]; + + /** Describes the current hardware vertex layout */ + struct vertex_info vertex_info; + + unsigned id; /* track lost context events */ }; +struct i915_blend_state { + unsigned iab; + unsigned modes4; + unsigned LIS5; + unsigned LIS6; +}; + +struct i915_depth_stencil_state { + unsigned stencil_modes4; + unsigned bfo[2]; + unsigned stencil_LIS5; + unsigned depth_LIS6; +}; +struct i915_rasterizer_state { + int light_twoside : 1; + unsigned st; + interp_mode color_interp; + + unsigned LIS4; + unsigned LIS7; + unsigned sc[1]; + + const struct pipe_rasterizer_state *templ; + + union { float f; unsigned u; } ds[2]; +}; + +struct i915_sampler_state { + unsigned state[3]; + const struct pipe_sampler_state *templ; +}; + +struct i915_alpha_test_state { + unsigned LIS6; +}; struct i915_context { - struct pipe_context pipe; + struct pipe_context pipe; struct i915_winsys *winsys; struct draw_context *draw; /* The most recent drawing state as set by the driver: */ - struct pipe_alpha_test_state alpha_test; - struct pipe_blend_state blend; + const struct i915_alpha_test_state *alpha_test; + const struct i915_blend_state *blend; + const struct i915_sampler_state *sampler[PIPE_MAX_SAMPLERS]; + const struct i915_depth_stencil_state *depth_stencil; + const struct i915_rasterizer_state *rasterizer; + const struct pipe_shader_state *fs; + struct pipe_blend_color blend_color; struct pipe_clear_color_state clear_color; struct pipe_clip_state clip; - struct pipe_depth_state depth_test; + struct pipe_constant_buffer constants[PIPE_SHADER_TYPES]; struct pipe_framebuffer_state framebuffer; - struct pipe_fs_state fs; struct pipe_poly_stipple poly_stipple; struct pipe_scissor_state scissor; - struct pipe_sampler_state sampler[PIPE_MAX_SAMPLERS]; - struct pipe_setup_state setup; - struct pipe_stencil_state stencil; struct pipe_mipmap_tree *texture[PIPE_MAX_SAMPLERS]; struct pipe_viewport_state viewport; - GLuint dirty; + struct pipe_vertex_buffer vertex_buffer[PIPE_ATTRIB_MAX]; - GLuint *batch_start; + unsigned dirty; + + unsigned *batch_start; struct i915_state current; - GLuint hardware_dirty; + unsigned hardware_dirty; - GLuint debug; + unsigned debug; + unsigned pci_id; struct { unsigned is_i945:1; @@ -130,18 +194,19 @@ struct i915_context /* A flag for each state_tracker state object: */ #define I915_NEW_VIEWPORT 0x1 -#define I915_NEW_SETUP 0x2 +#define I915_NEW_RASTERIZER 0x2 #define I915_NEW_FS 0x4 #define I915_NEW_BLEND 0x8 -#define I915_NEW_CLIP 0x10 -#define I915_NEW_SCISSOR 0x20 -#define I915_NEW_STIPPLE 0x40 -#define I915_NEW_FRAMEBUFFER 0x80 -#define I915_NEW_ALPHA_TEST 0x100 -#define I915_NEW_DEPTH_TEST 0x200 -#define I915_NEW_SAMPLER 0x400 -#define I915_NEW_TEXTURE 0x800 -#define I915_NEW_STENCIL 0x1000 +#define I915_NEW_CLIP 0x10 +#define I915_NEW_SCISSOR 0x20 +#define I915_NEW_STIPPLE 0x40 +#define I915_NEW_FRAMEBUFFER 0x80 +#define I915_NEW_ALPHA_TEST 0x100 +#define I915_NEW_DEPTH_STENCIL 0x200 +#define I915_NEW_SAMPLER 0x400 +#define I915_NEW_TEXTURE 0x800 +#define I915_NEW_CONSTANTS 0x1000 + /* Driver's internally generated state flags: */ @@ -170,7 +235,6 @@ struct draw_stage *i915_draw_render_stage( struct i915_context *i915 ); * i915_state_emit.c: */ void i915_emit_hardware_state(struct i915_context *i915 ); -unsigned *i915_passthrough_program( unsigned *dwords ); @@ -178,7 +242,7 @@ unsigned *i915_passthrough_program( unsigned *dwords ); * i915_clear.c: */ void i915_clear(struct pipe_context *pipe, struct pipe_surface *ps, - GLuint clearValue); + unsigned clearValue); /*********************************************************************** @@ -188,6 +252,7 @@ void i915_init_region_functions( struct i915_context *i915 ); void i915_init_surface_functions( struct i915_context *i915 ); void i915_init_state_functions( struct i915_context *i915 ); void i915_init_flush_functions( struct i915_context *i915 ); +void i915_init_string_functions( struct i915_context *i915 );