#include "main/imports.h"
#include "main/bufferobj.h"
#include "main/context.h"
#include "main/colormac.h"
#include "main/mtypes.h"
#include "main/teximage.h"
#include "shader/prog_parameter.h"
#include "shader/prog_statevars.h"
#include "swrast.h"
#include "s_blend.h"
#include "s_context.h"
#include "s_lines.h"
#include "s_points.h"
#include "s_span.h"
#include "s_triangle.h"
#include "s_texfilter.h"
Defines | |
#define | _SWRAST_NEW_DERIVED |
#define | _SWRAST_NEW_TRIANGLE |
#define | _SWRAST_NEW_LINE |
#define | _SWRAST_NEW_POINT |
#define | _SWRAST_NEW_TEXTURE_SAMPLE_FUNC _NEW_TEXTURE |
#define | _SWRAST_NEW_TEXTURE_ENV_MODE _NEW_TEXTURE |
#define | _SWRAST_NEW_BLEND_FUNC _NEW_COLOR |
#define | SWRAST_DEBUG 0 |
#define | SWRAST_DEBUG_VERTICES 0 |
Functions | |
static void | _swrast_update_rasterflags (GLcontext *ctx) |
Recompute the value of swrast->_RasterMask, etc. | |
static void | _swrast_update_polygon (GLcontext *ctx) |
Examine polygon cull state to compute the _BackfaceCullSign field. | |
static void | _swrast_update_fog_hint (GLcontext *ctx) |
Update the _PreferPixelFog field to indicate if we need to compute fog blend factors (from the fog coords) per-fragment. | |
static void | _swrast_update_texture_env (GLcontext *ctx) |
Update the swrast->_TextureCombinePrimary flag. | |
static void | _swrast_update_deferred_texture (GLcontext *ctx) |
Determine if we can defer texturing/shading until after Z/stencil testing. | |
static void | _swrast_update_fog_state (GLcontext *ctx) |
Update swrast->_FogColor and swrast->_FogEnable values. | |
static void | _swrast_update_fragment_program (GLcontext *ctx, GLbitfield newState) |
Update state for running fragment programs. | |
static void | _swrast_update_specular_vertex_add (GLcontext *ctx) |
See if we can do early diffuse+specular (primary+secondary) color add per vertex instead of per-fragment. | |
static void | _swrast_validate_triangle (GLcontext *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2) |
Stub for swrast->Triangle to select a true triangle function after a state change. | |
static void | _swrast_validate_line (GLcontext *ctx, const SWvertex *v0, const SWvertex *v1) |
Called via swrast->Line. | |
static void | _swrast_validate_point (GLcontext *ctx, const SWvertex *v0) |
Called via swrast->Point. | |
static void _ASMAPI | _swrast_validate_blend_func (GLcontext *ctx, GLuint n, const GLubyte mask[], GLvoid *src, const GLvoid *dst, GLenum chanType) |
Called via swrast->BlendFunc. | |
static void | _swrast_validate_texture_images (GLcontext *ctx) |
Make sure we have texture image data for all the textures we may need for subsequent rendering. | |
void | _swrast_eject_texture_images (GLcontext *ctx) |
Free the texture image data attached to all currently enabled textures. | |
static void | _swrast_sleep (GLcontext *ctx, GLbitfield new_state) |
static void | _swrast_invalidate_state (GLcontext *ctx, GLbitfield new_state) |
void | _swrast_update_texture_samplers (GLcontext *ctx) |
static void | _swrast_update_active_attribs (GLcontext *ctx) |
Update swrast->_ActiveAttribs, swrast->_NumActiveAttribs, swrast->_ActiveAtttribMask. | |
void | _swrast_validate_derived (GLcontext *ctx) |
void | _swrast_Quad (GLcontext *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2, const SWvertex *v3) |
void | _swrast_Triangle (GLcontext *ctx, const SWvertex *v0, const SWvertex *v1, const SWvertex *v2) |
void | _swrast_Line (GLcontext *ctx, const SWvertex *v0, const SWvertex *v1) |
void | _swrast_Point (GLcontext *ctx, const SWvertex *v0) |
void | _swrast_InvalidateState (GLcontext *ctx, GLbitfield new_state) |
void | _swrast_ResetLineStipple (GLcontext *ctx) |
void | _swrast_SetFacing (GLcontext *ctx, GLuint facing) |
Indicates front/back facing for subsequent points/lines when drawing unfilled polygons. | |
void | _swrast_allow_vertex_fog (GLcontext *ctx, GLboolean value) |
void | _swrast_allow_pixel_fog (GLcontext *ctx, GLboolean value) |
GLboolean | _swrast_CreateContext (GLcontext *ctx) |
void | _swrast_DestroyContext (GLcontext *ctx) |
struct swrast_device_driver * | _swrast_GetDeviceDriverReference (GLcontext *ctx) |
void | _swrast_flush (GLcontext *ctx) |
void | _swrast_render_primitive (GLcontext *ctx, GLenum prim) |
void | _swrast_render_start (GLcontext *ctx) |
void | _swrast_render_finish (GLcontext *ctx) |
void | _swrast_print_vertex (GLcontext *ctx, const SWvertex *v) |
#define _SWRAST_NEW_BLEND_FUNC _NEW_COLOR |
#define _SWRAST_NEW_DERIVED |
Value:
(_SWRAST_NEW_RASTERMASK | \ _NEW_PROGRAM_CONSTANTS | \ _NEW_TEXTURE | \ _NEW_HINT | \ _NEW_POLYGON )
#define _SWRAST_NEW_LINE |
Value:
(_SWRAST_NEW_DERIVED | \ _NEW_RENDERMODE| \ _NEW_LINE| \ _NEW_TEXTURE| \ _NEW_LIGHT| \ _NEW_FOG| \ _NEW_DEPTH | \ _DD_NEW_SEPARATE_SPECULAR)
#define _SWRAST_NEW_POINT |
Value:
(_SWRAST_NEW_DERIVED | \ _NEW_RENDERMODE | \ _NEW_POINT | \ _NEW_TEXTURE | \ _NEW_LIGHT | \ _NEW_FOG | \ _DD_NEW_SEPARATE_SPECULAR)
#define _SWRAST_NEW_TEXTURE_ENV_MODE _NEW_TEXTURE |
#define _SWRAST_NEW_TEXTURE_SAMPLE_FUNC _NEW_TEXTURE |
#define _SWRAST_NEW_TRIANGLE |
Value:
(_SWRAST_NEW_DERIVED | \ _NEW_RENDERMODE| \ _NEW_POLYGON| \ _NEW_DEPTH| \ _NEW_STENCIL| \ _NEW_COLOR| \ _NEW_TEXTURE| \ _SWRAST_NEW_RASTERMASK| \ _NEW_LIGHT| \ _NEW_FOG | \ _DD_NEW_SEPARATE_SPECULAR)
#define SWRAST_DEBUG 0 |
#define SWRAST_DEBUG_VERTICES 0 |
void _swrast_allow_pixel_fog | ( | GLcontext * | ctx, | |
GLboolean | value | |||
) |
void _swrast_allow_vertex_fog | ( | GLcontext * | ctx, | |
GLboolean | value | |||
) |
GLboolean _swrast_CreateContext | ( | GLcontext * | ctx | ) |
void _swrast_DestroyContext | ( | GLcontext * | ctx | ) |
void _swrast_eject_texture_images | ( | GLcontext * | ctx | ) |
Free the texture image data attached to all currently enabled textures.
Meant to be called by device drivers when transitioning from software to hardware rendering.
void _swrast_flush | ( | GLcontext * | ctx | ) |
struct swrast_device_driver* _swrast_GetDeviceDriverReference | ( | GLcontext * | ctx | ) | [read] |
static void _swrast_invalidate_state | ( | GLcontext * | ctx, | |
GLbitfield | new_state | |||
) | [static] |
void _swrast_InvalidateState | ( | GLcontext * | ctx, | |
GLbitfield | new_state | |||
) |
void _swrast_Quad | ( | GLcontext * | ctx, | |
const SWvertex * | v0, | |||
const SWvertex * | v1, | |||
const SWvertex * | v2, | |||
const SWvertex * | v3 | |||
) |
void _swrast_render_finish | ( | GLcontext * | ctx | ) |
void _swrast_render_primitive | ( | GLcontext * | ctx, | |
GLenum | prim | |||
) |
void _swrast_render_start | ( | GLcontext * | ctx | ) |
void _swrast_ResetLineStipple | ( | GLcontext * | ctx | ) |
void _swrast_SetFacing | ( | GLcontext * | ctx, | |
GLuint | facing | |||
) |
Indicates front/back facing for subsequent points/lines when drawing unfilled polygons.
Needed for two-side stencil.
static void _swrast_sleep | ( | GLcontext * | ctx, | |
GLbitfield | new_state | |||
) | [static] |
void _swrast_Triangle | ( | GLcontext * | ctx, | |
const SWvertex * | v0, | |||
const SWvertex * | v1, | |||
const SWvertex * | v2 | |||
) |
static void _swrast_update_active_attribs | ( | GLcontext * | ctx | ) | [static] |
Update swrast->_ActiveAttribs, swrast->_NumActiveAttribs, swrast->_ActiveAtttribMask.
static void _swrast_update_deferred_texture | ( | GLcontext * | ctx | ) | [static] |
Determine if we can defer texturing/shading until after Z/stencil testing.
This potentially allows us to skip texturing/shading for lots of fragments.
static void _swrast_update_fog_hint | ( | GLcontext * | ctx | ) | [static] |
Update the _PreferPixelFog field to indicate if we need to compute fog blend factors (from the fog coords) per-fragment.
static void _swrast_update_fog_state | ( | GLcontext * | ctx | ) | [static] |
Update swrast->_FogColor and swrast->_FogEnable values.
static void _swrast_update_fragment_program | ( | GLcontext * | ctx, | |
GLbitfield | newState | |||
) | [static] |
Update state for running fragment programs.
Basically, load the program parameters with current state values.
static void _swrast_update_polygon | ( | GLcontext * | ctx | ) | [static] |
Examine polygon cull state to compute the _BackfaceCullSign field.
_BackfaceCullSign will be 0 if no culling, -1 if culling back-faces, and 1 if culling front-faces. The Polygon FrontFace state also factors in.
static void _swrast_update_rasterflags | ( | GLcontext * | ctx | ) | [static] |
Recompute the value of swrast->_RasterMask, etc.
according to the current context. The _RasterMask field can be easily tested by drivers to determine certain basic GL state (does the primitive need stenciling, logic-op, fog, etc?).
static void _swrast_update_specular_vertex_add | ( | GLcontext * | ctx | ) | [static] |
See if we can do early diffuse+specular (primary+secondary) color add per vertex instead of per-fragment.
static void _swrast_update_texture_env | ( | GLcontext * | ctx | ) | [static] |
Update the swrast->_TextureCombinePrimary flag.
void _swrast_update_texture_samplers | ( | GLcontext * | ctx | ) |
static void _ASMAPI _swrast_validate_blend_func | ( | GLcontext * | ctx, | |
GLuint | n, | |||
const GLubyte | mask[], | |||
GLvoid * | src, | |||
const GLvoid * | dst, | |||
GLenum | chanType | |||
) | [static] |
Called via swrast->BlendFunc.
Examine GL state to choose a blending function, then call it.
void _swrast_validate_derived | ( | GLcontext * | ctx | ) |
static void _swrast_validate_line | ( | GLcontext * | ctx, | |
const SWvertex * | v0, | |||
const SWvertex * | v1 | |||
) | [static] |
Called via swrast->Line.
Examine current GL state and choose a software line routine. Then call it.
Called via swrast->Point.
Examine current GL state and choose a software point routine. Then call it.
static void _swrast_validate_texture_images | ( | GLcontext * | ctx | ) | [static] |
Make sure we have texture image data for all the textures we may need for subsequent rendering.
static void _swrast_validate_triangle | ( | GLcontext * | ctx, | |
const SWvertex * | v0, | |||
const SWvertex * | v1, | |||
const SWvertex * | v2 | |||
) | [static] |
Stub for swrast->Triangle to select a true triangle function after a state change.