[Mesa-dev] [PATCH 02/10] i965: Require hardware contexts (and thus Kernel 3.6) on Gen6+.
Paul Berry
stereotype441 at gmail.com
Mon May 20 09:54:02 PDT 2013
On 17 May 2013 10:17, Kenneth Graunke <kenneth at whitecape.org> wrote:
> Hardware contexts are necessary to reasonably support OpenGL 3.2.
> In particular, we currently maintain software counters for transform
> feedback buffer offsets and counters, which relies on knowing the number
> of primitives generated. Geometry shaders violate that assumption.
>
> At the time of writing, Debian has moved to Kernel 3.8, which means most
> people probably have a newer kernel by now. It's also worth noting that
> this patch won't land until Mesa 10 which is currently targeted for
> September. By that point, even more people will have a newer kernel.
>
> This patch leaves the code for flagging BRW_NEW_CONTEXT on new
> batchbuffers if hw_ctx == NULL since that still occurs pre-Gen6.
>
There's a slight change here that I'd like to see documented more clearly
in the commit message:
Previously, Mesa would *try* to allocate a hardware context regardless of
intel->gen. That would always fail for gen<6 (since the kernel doesn't
support hardware contexts prior to gen6), and would sometimes fail and
sometimes succeed on gen6+, depending on kernel version. Now, Mesa doesn't
even try to allocate a hardware context if gen<6.
With that changed, this is:
Reviewed-by: Paul Berry <stereotype441 at gmail.com>
>
> Cc: Eric Anholt <eric at anholt.net>
> Cc: Paul Berry <stereotype441 at gmail.com>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/mesa/drivers/dri/i965/brw_context.c | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c
> b/src/mesa/drivers/dri/i965/brw_context.c
> index 69b7e4d..2f5fedb 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -143,6 +143,23 @@ brwCreateContext(int api,
> return false;
> }
>
> + if (intel->gen >= 6) {
> + /* Create a new hardware context. Using a hardware context means
> that
> + * our GPU state will be saved/restored on context switch, allowing
> us
> + * to assume that the GPU is in the same state we left it in.
> + *
> + * This is required for transform feedback buffer offsets, query
> objects,
> + * and also allows us to reduce how much state we have to emit.
> + */
> + intel->hw_ctx = drm_intel_gem_context_create(intel->bufmgr);
> +
> + if (!intel->hw_ctx) {
> + fprintf(stderr, "Gen6+ requires Kernel 3.6 or later.\n");
> + ralloc_free(brw);
> + return false;
> + }
> + }
> +
> brw_init_surface_formats(brw);
>
> /* Initialize swrast, tnl driver tables: */
> @@ -374,7 +391,6 @@ brwCreateContext(int api,
>
> brw->prim_restart.in_progress = false;
> brw->prim_restart.enable_cut_index = false;
> - intel->hw_ctx = drm_intel_gem_context_create(intel->bufmgr);
>
> brw_init_state( brw );
>
> --
> 1.8.2.3
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130520/5ca4e9a5/attachment.html>
More information about the mesa-dev
mailing list