X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fi915%2Fi915_context.h;h=4e68d1193ca61eb29b9d3806eb49548a2fcea6c7;hb=f8894fab0294817481b30e3cc40f6b3ccfe9314d;hp=082d614442535a26ba8c0cbf334d589aa86ef5d9;hpb=0ea575d721821262a862ceef010db9b1a8b4a6d9;p=mesa.git diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h index 082d6144425..4e68d1193ca 100644 --- a/src/mesa/drivers/dri/i915/i915_context.h +++ b/src/mesa/drivers/dri/i915/i915_context.h @@ -1,6 +1,6 @@ /************************************************************************** * - * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * Copyright 2003 VMware, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -18,7 +18,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -29,7 +29,6 @@ #define I915CONTEXT_INC #include "intel_context.h" -#include "i915_reg.h" #define I915_FALLBACK_TEXTURE 0x1000 #define I915_FALLBACK_COLORMASK 0x2000 @@ -39,16 +38,19 @@ #define I915_FALLBACK_LOGICOP 0x20000 #define I915_FALLBACK_POLYGON_SMOOTH 0x40000 #define I915_FALLBACK_POINT_SMOOTH 0x80000 +#define I915_FALLBACK_POINT_SPRITE_COORD_ORIGIN 0x100000 +#define I915_FALLBACK_DRAW_OFFSET 0x200000 +#define I915_FALLBACK_COORD_REPLACE 0x400000 #define I915_UPLOAD_CTX 0x1 #define I915_UPLOAD_BUFFERS 0x2 #define I915_UPLOAD_STIPPLE 0x4 #define I915_UPLOAD_PROGRAM 0x8 #define I915_UPLOAD_CONSTANTS 0x10 -#define I915_UPLOAD_FOG 0x20 #define I915_UPLOAD_INVARIENT 0x40 #define I915_UPLOAD_DEFAULTS 0x80 #define I915_UPLOAD_RASTER_RULES 0x100 +#define I915_UPLOAD_BLEND 0x200 #define I915_UPLOAD_TEX(i) (0x00010000<<(i)) #define I915_UPLOAD_TEX_ALL (0x00ff0000) #define I915_UPLOAD_TEX_0_SHIFT 16 @@ -62,10 +64,10 @@ #define I915_DESTREG_DBUFADDR1 4 #define I915_DESTREG_DV0 6 #define I915_DESTREG_DV1 7 -#define I915_DESTREG_SENABLE 8 -#define I915_DESTREG_SR0 9 -#define I915_DESTREG_SR1 10 -#define I915_DESTREG_SR2 11 +#define I915_DESTREG_SR0 8 +#define I915_DESTREG_SR1 9 +#define I915_DESTREG_SR2 10 +#define I915_DESTREG_SENABLE 11 #define I915_DESTREG_DRAWRECT0 12 #define I915_DESTREG_DRAWRECT1 13 #define I915_DESTREG_DRAWRECT2 14 @@ -75,24 +77,20 @@ #define I915_DEST_SETUP_SIZE 18 #define I915_CTXREG_STATE4 0 -#define I915_CTXREG_LI 1 -#define I915_CTXREG_LIS2 2 -#define I915_CTXREG_LIS4 3 -#define I915_CTXREG_LIS5 4 -#define I915_CTXREG_LIS6 5 -#define I915_CTXREG_IAB 6 -#define I915_CTXREG_BLENDCOLOR0 7 -#define I915_CTXREG_BLENDCOLOR1 8 -#define I915_CTXREG_BF_STENCIL_OPS 9 -#define I915_CTXREG_BF_STENCIL_MASKS 10 -#define I915_CTX_SETUP_SIZE 11 - -#define I915_FOGREG_COLOR 0 -#define I915_FOGREG_MODE0 1 -#define I915_FOGREG_MODE1 2 -#define I915_FOGREG_MODE2 3 -#define I915_FOGREG_MODE3 4 -#define I915_FOG_SETUP_SIZE 5 +#define I915_CTXREG_LI 1 +#define I915_CTXREG_LIS2 2 +#define I915_CTXREG_LIS3 3 +#define I915_CTXREG_LIS4 4 +#define I915_CTXREG_LIS5 5 +#define I915_CTXREG_LIS6 6 +#define I915_CTXREG_BF_STENCIL_OPS 7 +#define I915_CTXREG_BF_STENCIL_MASKS 8 +#define I915_CTX_SETUP_SIZE 9 + +#define I915_BLENDREG_IAB 0 +#define I915_BLENDREG_BLENDCOLOR0 1 +#define I915_BLENDREG_BLENDCOLOR1 2 +#define I915_BLEND_SETUP_SIZE 3 #define I915_STPREG_ST0 0 #define I915_STPREG_ST1 1 @@ -118,9 +116,18 @@ enum { I915_RASTER_RULES_SETUP_SIZE, }; +#define I915_TEX_UNITS 8 +#define I915_WPOS_TEX_INVALID 0xff + #define I915_MAX_CONSTANT 32 #define I915_CONSTANT_SIZE (2+(4*I915_MAX_CONSTANT)) +#define I915_MAX_TEX_INDIRECT 4 +#define I915_MAX_TEX_INSN 32 +#define I915_MAX_ALU_INSN 64 +#define I915_MAX_DECL_INSN 27 +#define I915_MAX_TEMPORARY 16 + #define I915_MAX_INSN (I915_MAX_DECL_INSN + \ I915_MAX_TEX_INSN + \ I915_MAX_ALU_INSN) @@ -135,12 +142,12 @@ enum { */ struct i915_fragment_program { - struct gl_fragment_program FragProg; + struct gl_program FragProg; - GLboolean translated; - GLboolean params_uptodate; - GLboolean on_hardware; - GLboolean error; /* If program is malformed for any reason. */ + bool translated; + bool params_uptodate; + bool on_hardware; + bool error; /* If program is malformed for any reason. */ /** Record of which phases R registers were last written in. */ GLuint register_phases[16]; @@ -156,7 +163,7 @@ struct i915_fragment_program /* TODO: split between the stored representation of a program and * the state used to build that representation. */ - GLcontext *ctx; + struct gl_context *ctx; /* declarations contains the packet header. */ GLuint declarations[I915_MAX_DECL_INSN * 3 + 1]; @@ -191,8 +198,9 @@ struct i915_fragment_program /* Helpers for i915_fragprog.c: */ - GLuint wpos_tex; - GLboolean depth_written; + uint8_t texcoord_mapping[I915_TEX_UNITS]; + uint8_t wpos_tex; + bool depth_written; struct { @@ -202,21 +210,12 @@ struct i915_fragment_program GLuint nr_params; }; - - - - - - -#define I915_TEX_UNITS 8 - - struct i915_hw_state { GLuint Ctx[I915_CTX_SETUP_SIZE]; + GLuint Blend[I915_BLEND_SETUP_SIZE]; GLuint Buffer[I915_DEST_SETUP_SIZE]; GLuint Stipple[I915_STP_SETUP_SIZE]; - GLuint Fog[I915_FOG_SETUP_SIZE]; GLuint Defaults[I915_DEF_SETUP_SIZE]; GLuint RasterRules[I915_RASTER_RULES_SETUP_SIZE]; GLuint Tex[I915_TEX_UNITS][I915_TEX_SETUP_SIZE]; @@ -235,7 +234,7 @@ struct i915_hw_state * be from a PBO or FBO. Will have to do this for draw and depth for * FBO's... */ - dri_bo *tex_buffer[I915_TEX_UNITS]; + drm_intel_bo *tex_buffer[I915_TEX_UNITS]; GLuint tex_offset[I915_TEX_UNITS]; @@ -243,22 +242,21 @@ struct i915_hw_state GLuint emitted; /* I915_UPLOAD_* */ }; -#define I915_FOG_PIXEL 2 -#define I915_FOG_VERTEX 1 -#define I915_FOG_NONE 0 - struct i915_context { struct intel_context intel; - GLuint last_ReallyEnabled; - GLuint vertex_fog; GLuint lodbias_ss2[MAX_TEXTURE_UNITS]; struct i915_fragment_program *current_program; - struct i915_hw_state meta, initial, state, *current; + drm_intel_bo *current_vb_bo; + unsigned int current_vertex_size; + + struct i915_hw_state state; + uint32_t last_draw_offset; + GLuint last_sampler; }; @@ -316,9 +314,14 @@ do { \ /*====================================================================== * i915_context.c */ -extern GLboolean i915CreateContext(const __GLcontextModes * mesaVis, - __DRIcontextPrivate * driContextPriv, - void *sharedContextPrivate); +extern bool i915CreateContext(int api, + const struct gl_config * mesaVis, + __DRIcontext * driContextPriv, + unsigned major_version, + unsigned minor_version, + uint32_t flags, + unsigned *error, + void *sharedContextPrivate); /*====================================================================== @@ -333,9 +336,9 @@ extern void i915_print_ureg(const char *msg, GLuint ureg); */ extern void i915InitStateFunctions(struct dd_function_table *functions); extern void i915InitState(struct i915_context *i915); -extern void i915_update_fog(GLcontext * ctx); -extern void i915_update_stencil(GLcontext * ctx); -extern void i915_update_provoking_vertex(GLcontext *ctx); +extern void i915_update_stencil(struct gl_context * ctx); +extern void i915_update_provoking_vertex(struct gl_context *ctx); +extern void i915_update_sprite_point_enable(struct gl_context *ctx); /*====================================================================== @@ -344,12 +347,6 @@ extern void i915_update_provoking_vertex(GLcontext *ctx); extern void i915UpdateTextureState(struct intel_context *intel); extern void i915InitTextureFuncs(struct dd_function_table *functions); -/*====================================================================== - * i915_metaops.c - */ -void i915InitMetaFuncs(struct i915_context *i915); - - /*====================================================================== * i915_fragprog.c */ @@ -360,8 +357,8 @@ extern void i915InitFragProgFuncs(struct dd_function_table *functions); * Inline conversion functions. These are better-typed than the * macros used previously: */ -static INLINE struct i915_context * -i915_context(GLcontext * ctx) +static inline struct i915_context * +i915_context(struct gl_context * ctx) { return (struct i915_context *) ctx; }