diff options
author | Brian <[email protected]> | 2007-11-05 18:04:30 -0700 |
---|---|---|
committer | Brian <[email protected]> | 2007-11-05 18:04:30 -0700 |
commit | c6499a741c99394e81d1d86ffd066f3d9749875c (patch) | |
tree | 8d48d05c9b1e0931d545445230758f1b2853d16f /src/mesa/pipe | |
parent | 01e716553001d57462e75aa7d76d05df92da8e87 (diff) |
Determine GL extensions/limits by making pipe queries.
The state tracker calls pipe->get_param() to determine the GL limits and
which OpenGL extensions are supported.
This is an initial implementation that'll probably change...
Diffstat (limited to 'src/mesa/pipe')
-rw-r--r-- | src/mesa/pipe/i915simple/i915_context.c | 20 | ||||
-rw-r--r-- | src/mesa/pipe/p_defines.h | 17 | ||||
-rw-r--r-- | src/mesa/pipe/softpipe/sp_context.c | 20 |
3 files changed, 57 insertions, 0 deletions
diff --git a/src/mesa/pipe/i915simple/i915_context.c b/src/mesa/pipe/i915simple/i915_context.c index 2c36a194c71..6de1e68f73b 100644 --- a/src/mesa/pipe/i915simple/i915_context.c +++ b/src/mesa/pipe/i915simple/i915_context.c @@ -142,6 +142,26 @@ static int i915_get_param(struct pipe_context *pipe, int param) { switch (param) { + case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS: + return 8; + case PIPE_CAP_NPOT_TEXTURES: + return 1; + case PIPE_CAP_TWO_SIDED_STENCIL: + return 1; + case PIPE_CAP_GLSL: + return 0; + case PIPE_CAP_S3TC: + return 0; + case PIPE_CAP_ANISOTROPIC_FILTER: + return 0; + case PIPE_CAP_POINT_SPRITE: + return 0; + case PIPE_CAP_MAX_RENDER_TARGETS: + return 1; + case PIPE_CAP_OCCLUSION_QUERY: + return 0; + case PIPE_CAP_TEXTURE_SHADOW_MAP: + return 0; default: return 0; } diff --git a/src/mesa/pipe/p_defines.h b/src/mesa/pipe/p_defines.h index 89824286367..ef79716ed91 100644 --- a/src/mesa/pipe/p_defines.h +++ b/src/mesa/pipe/p_defines.h @@ -225,4 +225,21 @@ #define PIPE_SPRITE_COORD_UPPER_LEFT 1 #define PIPE_SPRITE_COORD_LOWER_LEFT 2 + +/** + * Implementation capabilities/limits + * Passed to pipe->get_param() + * XXX this will need some fine tuning... + */ +#define PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS 1 +#define PIPE_CAP_NPOT_TEXTURES 2 +#define PIPE_CAP_TWO_SIDED_STENCIL 3 +#define PIPE_CAP_GLSL 4 /* XXX need something better */ +#define PIPE_CAP_S3TC 5 +#define PIPE_CAP_ANISOTROPIC_FILTER 6 +#define PIPE_CAP_POINT_SPRITE 7 +#define PIPE_CAP_MAX_RENDER_TARGETS 8 +#define PIPE_CAP_OCCLUSION_QUERY 9 +#define PIPE_CAP_TEXTURE_SHADOW_MAP 10 + #endif diff --git a/src/mesa/pipe/softpipe/sp_context.c b/src/mesa/pipe/softpipe/sp_context.c index 46f591e4255..effecda87e5 100644 --- a/src/mesa/pipe/softpipe/sp_context.c +++ b/src/mesa/pipe/softpipe/sp_context.c @@ -277,6 +277,26 @@ static const char *softpipe_get_vendor( struct pipe_context *pipe ) static int softpipe_get_param(struct pipe_context *pipe, int param) { switch (param) { + case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS: + return 8; + case PIPE_CAP_NPOT_TEXTURES: + return 1; + case PIPE_CAP_TWO_SIDED_STENCIL: + return 1; + case PIPE_CAP_GLSL: + return 1; + case PIPE_CAP_S3TC: + return 0; + case PIPE_CAP_ANISOTROPIC_FILTER: + return 0; + case PIPE_CAP_POINT_SPRITE: + return 1; + case PIPE_CAP_MAX_RENDER_TARGETS: + return 1; + case PIPE_CAP_OCCLUSION_QUERY: + return 1; + case PIPE_CAP_TEXTURE_SHADOW_MAP: + return 1; default: return 0; } |