virtual/opencl provider media-libs/mesa[opencl] doesn't always provide OpenCL, since media-libs/mesa ignores opencl USE flag in some cases, that is: if VIDEO_CARDS does not contain at least one of r600 or radeonsi, or if built without either llvm or gallium USE flag. In this case media-libs/mesa[opencl] will falsely satisfy virtual/opencl dependency and then packages that depend on virtual/opencl will fail to build, for example app-text/tesseract fails with: checking for clGetPlatformIDs in -lOpenCL... no configure: error: Required OpenCL library not found! I guess media-libs/mesa should have its REQUIRED_USE set in a way that if its opencl USE flag is set then this package other OpenCL dependencies are required, too.
With virtual/opencl-3-r1 we've changed things so that we always have an ICD loader that satisfies the virtual. With that in place, it's up to the user to install a package that provides a driver for their particular hardware.