mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 02:28:10 +02:00
vc4: Fall back to renderonly if the vc4 driver doesn't have v3d.
I have a platform with vc4 display but V3D 4.x. We can fall back on kmsro's probing to bring up the v3d gallium driver. Acked-by: Rob Clark <robdclark@chromium.org>
This commit is contained in:
parent
7e069832a0
commit
edb04953c8
3 changed files with 35 additions and 4 deletions
|
|
@ -96,7 +96,6 @@ if host_machine.cpu_family() == 'arm'
|
|||
vc4_c_args += '-DUSE_ARM_ASM'
|
||||
endif
|
||||
|
||||
dep_simpenrose = dependency('simpenrose', required : false)
|
||||
if dep_simpenrose.found()
|
||||
vc4_c_args += '-DUSE_VC4_SIMULATOR'
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -18,12 +18,23 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
|
||||
dep_simpenrose = dependency('simpenrose', required : false)
|
||||
|
||||
vc4_winsys_c_args = []
|
||||
if with_gallium_kmsro
|
||||
vc4_winsys_c_args += '-DGALLIUM_KMSRO'
|
||||
endif
|
||||
|
||||
if dep_simpenrose.found()
|
||||
vc4_winsys_c_args += '-DUSE_VC4_SIMULATOR'
|
||||
endif
|
||||
|
||||
libvc4winsys = static_library(
|
||||
'vc4winsys',
|
||||
files('vc4_drm_winsys.c'),
|
||||
include_directories : [
|
||||
inc_src, inc_include,
|
||||
inc_gallium, inc_gallium_aux, inc_gallium_drivers,
|
||||
inc_gallium, inc_gallium_aux, inc_gallium_drivers, inc_gallium_winsys,
|
||||
],
|
||||
c_args : [c_vis_args],
|
||||
c_args : [c_vis_args, vc4_winsys_c_args],
|
||||
)
|
||||
|
|
|
|||
|
|
@ -23,15 +23,36 @@
|
|||
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#include "renderonly/renderonly.h"
|
||||
#include "kmsro/drm/kmsro_drm_public.h"
|
||||
#include "vc4_drm_public.h"
|
||||
#include "vc4/vc4_screen.h"
|
||||
#include "drm-uapi/vc4_drm.h"
|
||||
|
||||
struct pipe_screen *
|
||||
vc4_drm_screen_create(int fd)
|
||||
{
|
||||
return vc4_screen_create(fcntl(fd, F_DUPFD_CLOEXEC, 3), NULL);
|
||||
bool v3d_present = true;
|
||||
|
||||
#ifndef USE_VC4_SIMULATOR
|
||||
struct drm_vc4_get_param ident0 = {
|
||||
.param = DRM_VC4_PARAM_V3D_IDENT0,
|
||||
};
|
||||
|
||||
int ret = ioctl(fd, DRM_IOCTL_VC4_GET_PARAM, &ident0);
|
||||
v3d_present = ret == 0;
|
||||
#endif
|
||||
|
||||
if (v3d_present)
|
||||
return vc4_screen_create(fcntl(fd, F_DUPFD_CLOEXEC, 3), NULL);
|
||||
|
||||
#ifdef GALLIUM_KMSRO
|
||||
return kmsro_drm_screen_create(fd);
|
||||
#endif
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct pipe_screen *
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue