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 <airlied@redhat.com> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
@@ -407,6 +407,12 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
|||||||
case PIPE_CAP_TIMER_QUERY:
|
case PIPE_CAP_TIMER_QUERY:
|
||||||
return r600_get_clock_crystal_freq(rscreen->radeon) != 0;
|
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:
|
default:
|
||||||
R600_ERR("r600: unknown param %d\n", param);
|
R600_ERR("r600: unknown param %d\n", param);
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -131,6 +131,10 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
|||||||
return 1;
|
return 1;
|
||||||
case PIPE_CAP_ARRAY_TEXTURES:
|
case PIPE_CAP_ARRAY_TEXTURES:
|
||||||
return 1;
|
return 1;
|
||||||
|
case PIPE_CAP_MIN_TEXEL_OFFSET:
|
||||||
|
return -8;
|
||||||
|
case PIPE_CAP_MAX_TEXEL_OFFSET:
|
||||||
|
return 7;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -471,7 +471,9 @@ enum pipe_cap {
|
|||||||
PIPE_CAP_MIXED_COLORBUFFER_FORMATS = 46,
|
PIPE_CAP_MIXED_COLORBUFFER_FORMATS = 46,
|
||||||
PIPE_CAP_SEAMLESS_CUBE_MAP = 47,
|
PIPE_CAP_SEAMLESS_CUBE_MAP = 47,
|
||||||
PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE = 48,
|
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 */
|
/* Shader caps not specific to any single stage */
|
||||||
|
@@ -203,6 +203,9 @@ void st_init_limits(struct st_context *st)
|
|||||||
|
|
||||||
/* XXX we'll need a better query here someday */
|
/* XXX we'll need a better query here someday */
|
||||||
if (screen->get_param(screen, PIPE_CAP_GLSL)) {
|
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;
|
c->GLSLVersion = 120;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user