v3d: Use the TFU to do generatemipmap.

This is a separate, dedicated hardware unit for texture layout conversions
and mipmap generation.
This commit is contained in:
Eric Anholt
2018-11-02 11:31:42 -07:00
parent ee0549ff9a
commit 2ebca177dc
7 changed files with 175 additions and 1 deletions

View File

@@ -79,6 +79,20 @@ v3d_screen_destroy(struct pipe_screen *pscreen)
ralloc_free(pscreen);
}
static bool
v3d_has_feature(struct v3d_screen *screen, enum drm_v3d_param feature)
{
struct drm_v3d_get_param p = {
.param = feature,
};
int ret = v3d_ioctl(screen->fd, DRM_IOCTL_V3D_GET_PARAM, &p);
if (ret != 0)
return false;
return p.value;
}
static int
v3d_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
{
@@ -113,6 +127,9 @@ v3d_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_TEXTURE_HALF_FLOAT_LINEAR:
return 1;
case PIPE_CAP_GENERATE_MIPMAP:
return v3d_has_feature(screen,DRM_V3D_PARAM_SUPPORTS_TFU);
case PIPE_CAP_INDEP_BLEND_ENABLE:
return screen->devinfo.ver >= 40;