diff options
author | Dave Airlie <[email protected]> | 2011-08-29 14:35:16 +0100 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2011-09-02 10:48:09 +0100 |
commit | 0b666106c5f75b581ef1ebeb354c29a00400404f (patch) | |
tree | d8c2a054a0002181f10e2694855782446d351884 /src | |
parent | 2083a276eb270b748d1c2668eb9faa5aadc8e700 (diff) |
gallium: add caps for MIN/MAX texel offsets.
As per Brian's suggestion, add caps for drivers that support texture
offsets to advertise a min/max via TGSI, also use it in the state tracker.
Signed-off-by: Dave Airlie <[email protected]>
Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/r600/r600_pipe.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_screen.c | 4 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_defines.h | 4 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_extensions.c | 3 |
4 files changed, 16 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 821c0d75973..e02da6e4d98 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -407,6 +407,12 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_TIMER_QUERY: return r600_get_clock_crystal_freq(rscreen->radeon) != 0; + case PIPE_CAP_MIN_TEXEL_OFFSET: + return -8; + + case PIPE_CAP_MAX_TEXEL_OFFSET: + return 7; + default: R600_ERR("r600: unknown param %d\n", param); return 0; diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index 960ab8c96ae..d22ed4cdcaf 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -131,6 +131,10 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) return 1; case PIPE_CAP_ARRAY_TEXTURES: return 1; + case PIPE_CAP_MIN_TEXEL_OFFSET: + return -8; + case PIPE_CAP_MAX_TEXEL_OFFSET: + return 7; default: return 0; } diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 795de1fbf62..19c0cab3d3c 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -471,7 +471,9 @@ enum pipe_cap { PIPE_CAP_MIXED_COLORBUFFER_FORMATS = 46, PIPE_CAP_SEAMLESS_CUBE_MAP = 47, PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE = 48, - PIPE_CAP_SCALED_RESOLVE = 49 + PIPE_CAP_SCALED_RESOLVE = 49, + PIPE_CAP_MIN_TEXEL_OFFSET = 50, + PIPE_CAP_MAX_TEXEL_OFFSET = 51, }; /* Shader caps not specific to any single stage */ diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 322dbbfd51d..aa7f3b52cb2 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -203,6 +203,9 @@ void st_init_limits(struct st_context *st) /* XXX we'll need a better query here someday */ if (screen->get_param(screen, PIPE_CAP_GLSL)) { + c->MinProgramTexelOffset = screen->get_param(screen, PIPE_CAP_MIN_TEXEL_OFFSET); + c->MaxProgramTexelOffset = screen->get_param(screen, PIPE_CAP_MAX_TEXEL_OFFSET); + c->GLSLVersion = 120; } } |