[Mesa-dev] [PATCH 00/15] i965, mesa, glapi: Build libi965_dri on Android
Chad Versace
chad at chad-versace.us
Fri Aug 5 13:19:47 PDT 2011
On 08/04/2011 11:42 PM, Chia-I Wu wrote:
> On Fri, Aug 5, 2011 at 12:27 PM, Chad Versace <chad at chad-versace.us> wrote:
>> On 08/04/2011 11:25 AM, Chia-I Wu wrote:
>>> Hi Chad,
>>>
>>> On Thu, Aug 4, 2011 at 6:47 PM, Chad Versace <chad at chad-versace.us> wrote:
>>>> This is the first step in porting i965 to Android, initially to Gingerbread.
>>>> Android is ubiquituous now, and the platform's importance can't be denied. The
>>>> Intel drivers really should support it.
>>>>
>>>> The series first builds libglapi, then libmesa, and then libi965_dri.
>>>> lib965_dri doens't work yet; it doesn't even link to libdrm. This is just the
>>>> initial work to get it to build.
>>>>
>>>> I'm aware that this may be controversial, so I've attempted to integrate the
>>>> Android makefiles as non-disruptively as possible.
>>>> - The Android makefiles attempt to duplicate as little as possible from the
>>>> existing makefiles. In one case, this dictated that some Makefile code be
>>>> extracted into a shared makefile.
>>>> - I've avoided modifying the existsing makefiles except when absolutely
>>>> necessary. When a modification or cleanup was necessary, I have attempted
>>>> to keep the changes minimal and do them incrementally.
>>>> - The locations of the Android makefiles mirror those of the existing
>>>> makefiles.
>>>>
>>>> The series does not break the Linux i965 build. I doubt it breaks other
>>>> drivers' builds, but I haven't tested it. If you want me to check that it
>>>> doesn't break your build, just let me know the autoconf options.
>>>>
>>>> The series lives on my android-gingerbread-i965 branch. If you'd like to try
>>>> the Android build yourself, you should pull from my personal Android manifest
>>>> [1], which closely mirrors android-x86, and set `BOARD_USES_I965 := true` in
>>>> buildspeck.mk.
>>>>
>>>> [1] repo init -u git://anongit.freedesktop.git/~chadversary/android.manifeset.git -b gingerbread-i965
>>> Thanks for bringing this up and working on it. Before commenting on
>>> the changes to Mesa, I'd like to talk a little bit about the external
>>> dependencies.
>>>
>>> To have a working build of Mesa for the Android Gingerbread source
>>> tree, these external changes are needed
>>>
>>> 1) modify Android's init (pid 1) to create DRI device nodes under /dev
>>> 2) make off_t 64-bit so that mmap() a GEM object works
>>> 3) figure out how to authenticate a DRM fd
>>> 4) add libdrm to Android source tree
>>> 5) add drm_gralloc (the DDX driver, sort of) to Android source tree
>>>
>>> There may be more that I cannot recall now.
>>>
>>> Of these changes, only 3), 4), and 5) affect how Mesa is built.
>>> It is safe to assume 4) and 5) are already there, as we have
>>> good relationship with those projects. But how to solve 3) is still
>>> an open question.
>>
>> Luckily, some key people who can help us with 3 belong to my team: the author of
>> Wayland, and the authors of Intel's DRM module, i915.ko. I will probe them when
>> we reach that bridge.
>>
>>> We can either spend several months discussing 3) with the Android team
>>> before landing Android support to Mesa.
>>
>> I have been given a timeframe to complete this, and though I cannot discuss the
>> details, several months is unacceptable. The Mesa port needs to be completed
>> before yesterday.
>>
>>> Or we can assume it is
>>> solved, land the Android support for Mesa probably over the next few
>>> weeks, and initiate the discussion with the Android team with
>>> something concrete. Now that we are at this, my preference is the
>>> latter.
>>
>> Yes. We should take the latter approach.
> I forgot to mention that we need to do 1), 2), ..., 5) only when we
> target for integrating into the vanilla Android tree. When we target
> for integration with Android-x86, these tasks are either done or
> worked around.
>>> Back to your changes. I am fine with landing your version and is
>>> willing to help review them, proivided your work won't stop after
>>> i915/i965 is supported. Otherwise, I prefer to prepare my version[1]
>>> for upstreaming, which can build all actively maintained drivers
>>> including Gallium ones. It would also be really great you can help,
>>> and suppose the list is fine with yet another build system for Mesa.
>>>
>>> [1] http://cgit.freedesktop.org/~olv/mesa/log/?h=android-gingerbread-7.11
>>
>> You have done a lot of work on the Mesa port, and I want to acknowledge your
>> expertise there. Please don't interpret my submission of this series as a
>> dismissal of that work. My intent in submitting my own patches was just to start
>> the process of getting Android support upstream, incrementally, in a public,
>> code-reviewed forum.
>>
>> Other drivers, of course, should also be supported. I do not want to place any
>> obstacle in way of that goal. At each step of the review process, we should
>> check with each other that the approach taken is compatible with both Gallium
>> and non-Gallium drivers.
> We will be basically doing everything from scratch, in smaller steps.
> In that case, I see no reason not to do this based on what is already
> there. I did plan to upstream my changes. So cleaning it up should
> not be a nightmare.
>
> Are there missing commits in your branch? I tried to build it, but it
> is almost no-op because sources are listed in the unused
> LOCAL_C_SOURCES instead of LOCAL_SRC_FILES.
Oops... that explains the lack of build erros...
>
>> My work won't stop once i965 support is completed. I will continue to maintain
>> Android i965 for the forseeable future. I expect that we will be collaborating
>> on this for a long time.
>>
>> --
>> Chad Versace
>> chad at chad-versace.us
--
Chad Versace
chad at chad-versace.us
More information about the mesa-dev
mailing list