[Mesa-dev] What branch to get patch 47790

Meng, David david.meng at intel.com
Tue Jun 16 16:34:17 PDT 2015


Hi Ken:

Thank you very much for your quick response.

I have been developing a GPU driver for VMware ESXi kernel.  ESXi kernel is a virtualized hypervisor and our GPU driver provides graphics support for that kernel. We used Mesa libraries in the user space.  The kernel driver and Mesa library work fine on HSW and IVB systems.  But we found that the Mesa (10.4.0) hits the unreachable code when we launching VM on the BDW system.  Launching a VM is equivalent to starting a 3D graphics application on Linux system.

The assert happens in following function:
      
brw_blorp_exec(struct brw_context *brw, const brw_blorp_params *params)
{
   .........
   switch (brw->gen) {
   case 6:
      gen6_blorp_exec(brw, params);
      break;
   case 7:
      gen7_blorp_exec(brw, params);
      break;  
    default:
      /* BLORP is not supported before Gen6. */ 
     unreachable("not reached");
    
    }
 }
 
I wonder what should I do for gen 8 GPU when the function  brw_blorp_exec() is called.  If I do nothing, the VM launch is terminated with a signal 6.  If I add  gen8/9 cases and a break,  the VM is able to be launched but 3D render does not work.  I got black screen because the kernel could not read TexImage back from Mesa texture buffer.

This function is not called in the mesa for Ubuntu running on BDW system (or the assert inside unreachable() is not enabled?) . So the same Mesa works fine on Ubuntu with BDW.

Because this function could not handle gen8 case, so we got assert.  I found Topi's patch added a function named gen8_blorp_exec() in this switch to handle gen8 and gen9 cases.  That is the reason I think his patch will make gen 8 (BDW) work in this function.  

Topi's patch is as following:
brw_blorp_exec(struct brw_context *brw, const brw_blorp_params *params)
{
   .........
   switch (brw->gen) {
   case 6:
      gen6_blorp_exec(brw, params);
      break;
   case 7:
      gen7_blorp_exec(brw, params);
      break;  
  case 8:
  case 9:
      gen8_blorp_exec(brw, params);
    default:
      /* BLORP is not supported before Gen6. */ 
     unreachable("not reached");
    }
 }
     
Please advise if I missed anything here.  It will be great if you let me know whether Topi's patch can resolve my issue?  If so, where I can get his patch.   

I got patch number 47790 from this URL: https://freedesktop.org/patch/47790

With my best regards,

David
-----Original Message-----
From: Kenneth Graunke [mailto:kenneth at whitecape.org] 
Sent: Tuesday, June 16, 2015 3:46 PM
To: Meng, David
Cc: mesa-dev at lists.freedesktop.org
Subject: Re: [Mesa-dev] What branch to get patch 47790

On Tuesday, June 16, 2015 10:08:38 PM Meng, David wrote:
> Hi:
> I am new to this email list.  I would like to get a help from you.
> 
> I found a patch with number of 47790 which supports Intel Broadwell(BDW) system gen8 GPU.  The author is Topi Pohjolainen.  The description is in below.
> I need this patch to launch a virtual machine on BDW system in which we are using Mesa library in user space.  But I could not find this patch in mesa master or any branches.  Would you please pint me where I can find a branch including this patch? 
> 
> I highly appreciate any help.
> 
> Regards,
> 
> David
> --------------------------------patch title and 
> description-------------------------------------
> [Mesa-dev] i965: Don't use gl-context for fbo-blits This series 
> introduces new blorp parameter type for blit programs compiled from 
> glsl-sources. For most parts the launch logic just calls core i965 
> batch emission logic.
> Vertex batches are handcrafted containing full vertex header 
> information. This is needed because the pipeline is programmed to skip 
> vertex shader, clip and viewport transformation in strips&fans
> (SF) but to provide the vertices directly from vertex fetcher (VF) to 
> the windower (WM).
> 
> Topi Pohjolainen (14):
>   i965/blorp/gen7: Support for loading glsl-based fragment shaders
>   i965/blorp/gen6: Support for loading glsl-based fragment shaders
>   meta: Provide read access to blit shaders
>   i965/meta: Add helper for looking up blit programs
>   i965/blorp: Add plumbing for glsl-based color blits
>   i965/blorp: Add support for loading vertices for glsl-based blits
>   i965/blorp: Add support for setting up surfaces for glsl-based blits
>   i965/blorp: Add support for setting samplers for glsl-based blits
>   i965/gen6: Add support for setting minimum layer for tex surfaces
>   i965/blorp: Enable glsl-based fbo blits
>   i965/blorp/gen7: Prepare re-using for gen8
>   i965/blorp/gen7: Expose state setup applicable to gen8
>   i965/blorp/gen6: Prepare vertex buffer setup logic for gen8
>   i965/blorp/gen8: Execution support

Hi David,

I'm not sure what you mean by "patch with a number of 47790".  We don't number patches in the Mesa community.  That must be some Intel internal number.

Those patches optimize our implementation of glBlitFramebuffer() on Broadwell, which should provide better performance in some cases.  We haven't landed them yet because Topi is rewriting them.

Those patches are not required for Broadwell support, however.
Broadwell has been supported since Mesa 10.1 (but you should use a more recent version, such as 10.6).

I don't know what's required for virtual machines, as I've never tried that.  But these patches definitely aren't relevant.

--Ken


More information about the mesa-dev mailing list