Yes GJK is appropriate for this.
The overall algorithm of GJK goes something like
simplex = empty
direction n = arbitrary
find furthest point p1 in mesh 1 in direction n
find furthest point p2 in mesh 2 in direction -n
supplement simplex with point p1-p2
if(simplex is tetrahedron) simplify simplex
direction n = pick direction perpendicular to simplex pointing to origin
you can then use the simplex at the end of the loop to calculate the distance from it to the origin and set finished to true and you will get a collection of points on each mesh which make up a pair of faces that are closer than x.