Mesa (master): 24 new commits

Paul Berry stereotype441 at kemper.freedesktop.org
Fri Aug 23 18:31:32 UTC 2013


URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=60ddb96f7e0ea8dfb277cd1f249c7912c07c46b1
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Fri Mar 22 12:34:19 2013 -0700

    i965/gs: Add a data structure for tracking VS output VUE map.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=06918f84c2d1092ac327d836ce9f136f41736e6f
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Tue Jun 11 14:23:12 2013 -0700

    i965/vec4: Make a function for setting up vec4 program key clip info.
    
    This functionality will need to be reused by geometry shaders.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5b5d10bcd353bf5bef1cd12f3a84625e56af3bb0
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Mar 27 12:39:37 2013 -0700

    i965: Make prim_to_hw_prim accessible outside brw_draw.c.
    
    We will need access to this array in order to configure the geometry
    shader.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=16512ba70d5a9b4645508030acf1572ee7c660a3
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Tue Feb 19 07:31:16 2013 -0800

    i965/gs: add GS visitors.
    
    This patch introduces the vec4_gs_visitor class, which translates
    geometry shaders from GLSL IR to back-end opcodes.
    
    This class is derived from vec4_visitor (which is also the base class
    for vec4_vs_visitor), so as a result most of the back end code is
    shared.  The only parts that differ are:
    
    - Geometry shaders use a different input payload organization, since
      the inputs need to match up with the outputs of the previous
      pipeline stage (vec4_gs_visitor::setup_payload() and
      vec4_gs_visitor::setup_varying_inputs()).
    
    - Geometry shader input array dereferences need a special stride
      computation, since all geometry shader inputs are interleaved into
      one giant array (vec4_gs_visitor::compute_array_stride()).
    
    - There are no geometry shader system values
      (vec4_gs_visitor::make_reg_for_system_value()).
    
    - At the beginning of a geometry shader, extra data in R0 needs to be
      zeroed out, and a vertex counter needs to be initialized
      (vec4_gs_visitor::emit_prolog()).
    
    - When EmitVertex() appears in the shader, the current contents of
      output variables need to be emitted to the URB, and the vertex
      counter needs to be incremented
      (vec4_gs_visitor::visit(ir_emit_vertex *)).
    
    - When generating a URB_WRITE message to output vertex data, the
      current state of the vertex counter needs to be used to store a
      write offset in the message header
      (vec4_gs_visitor::emit_urb_write_header()).
    
    - The URB_WRITE message that outputs vertex data needs to be sent
      using GS_OPCODE_URB_WRITE, since VS_OPCODE_URB_WRITE would overwrite
      the offsets in the message header
      (vec4_gs_visitor::emit_urb_write_opcode()).
    
    - At the end of a geometry shader, the final vertex count needs to be
      delivered using a URB WRITE message
      (vec4_gs_visitor::emit_thread_end()).
    
    - EndPrimitive() functionality is not implemented yet
      (vec4_gs_visitor::visit(ir_end_primitive *)).
    
    - There is no support for assembly shaders
      (vec4_gs_visitor::emit_program_code()).
    
    v2: Make num_input_vertices const.  Refer to registers as rN rather
    than gN, for consistency with the PRM.  Fix misspelling.  Improve
    comment in the ir_emit_vertex visitor explaining why we emit vertices
    inside a conditional.  Enclose the conditional code in the
    ir_emit_vertex visitor between curly braces.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=35bdd552d5beb31e9b8319986c8f78d762c1228c
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Tue Feb 19 07:31:16 2013 -0800

    i965/gs: Add GS_OPCODE_SET_DWORD_2_IMMED.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7417eddea9969cf09f36b05f218a59b22c076f0c
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Mar 23 08:18:43 2013 -0700

    i965/gs: Add GS_OPCODE_SET_VERTEX_COUNT.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ce722fd65dde02ed823cbc0b19863cae8d8f6ee2
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Mar 23 07:59:13 2013 -0700

    i965/gs: Add GS_OPCODE_SET_WRITE_OFFSET.
    
    v2: Added a comment to vec4_generator::generate_gs_set_write_offset().
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4416cb79926f089ff55dbbb352b94ec2890ae823
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Mar 23 07:42:32 2013 -0700

    i965/gs: Add GS_OPCODE_THREAD_END.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=96eb2f353605b382cf4fc930cc1d322130b12270
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Mar 21 09:11:12 2013 -0700

    i965/gs: Add GS_OPCODE_URB_WRITE.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=eaa63cbbc2f5ae415fc89ef6fd74c5b26ad622fd
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Mar 21 09:11:12 2013 -0700

    i965/gs: Add a flag allowing URB write messages to use a per-slot offset.
    
    This will be used by geometry shaders to implement the EmitVertex()
    function, since it requires writing data to a dynamically-determined
    offset within the geometry shader's URB entry.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a9e8c10bd76f9a94b878b76bb5ae696beeaae2e0
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Aug 10 21:13:33 2013 -0700

    i965: Combine 4 boolean args of brw_urb_WRITE into a flags bitfield.
    
    The arguments to brw_urb_WRITE() were getting pretty unwieldy, and we
    have to add more flags to support geometry shaders anyhow.
    
    Also plumb these flags through brw_clip_emit_vue(),
    brw_set_urb_message(), and the vec4_instruction class.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=591fc0861cef499a355c1816641c8c963846b001
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Tue Jul 2 08:02:47 2013 -0700

    i965/gs: Add a case to brwNewProgram() for geometry shaders.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ebbb8c0c76dd5d0ce072676efb1ca60eb15e16ab
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Tue Feb 19 07:31:16 2013 -0800

    i965/gs: Create structs for use by GS program compilation.
    
    v2: Make id "unsigned" rather than "GLuint".
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3167dca3d4e8fb40311cdb22636f66ed2ebf1d2c
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Tue Jul 2 07:48:04 2013 -0700

    i965/gs: Add a case to brwBindProgram() for geometry shaders.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=158dcdc0e2ec99ee527a633bef7b236a73688231
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Fri Mar 22 12:49:11 2013 -0700

    i965/gs: Add brw->geometry_program.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7f57101ad53112b16e4a400f312f68a85dfbd108
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Jul 13 09:03:18 2013 -0700

    i965/vec4: Virtualize setup_payload instead of setup_attributes.
    
    When I initially generalized the vec4_visitor class in preparation for
    geometry shaders, I assumed that the setup_attributes() function would
    need to be different between vertex and geometry shaders, but its
    caller, setup_payload(), could be shared.  So I made
    setup_attributes() a virtual function.
    
    It turns out this isn't true; setup_payload() needs to be different
    too, since the geometry shader payload sometimes includes an extra
    register (primitive ID) that has to come before uniforms.
    
    So setup_payload() needs to be the virtual function instead of
    setup_attributes().
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=626495d269e2c2df9dae5c46c086ffff93c77a19
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Jul 13 07:09:54 2013 -0700

    i965/vec4: Allow for dispatch_grf_start_reg to vary.
    
    Both 3DSTATE_VS and 3DSTATE_GS have a dispatch_grf_start_reg control,
    which determines the register where the hardware delivers data sourced
    from the URB (push constants followed by per-vertex input data).
    
    For vertex shaders, we always set dispatch_grf_start_reg to 1, since
    R1 is always the first register available for push constants in vertex
    shaders.
    
    For geometry shaders, we'll need the flexibility to set
    dispatch_grf_start_reg to different values depending on the behvaiour
    of the geometry shader; if it accesses gl_PrimitiveIDIn, we'll need to
    set it to 2 to allow the primitive ID to be delivered to the thread in
    R1.
    
    This patch eliminates the assumption that dispatch_grf_start_reg is
    always 1.  In vec4_visitor, we record the regnum that was passed to
    vec4_visitor::setup_uniforms() in prog_data for later use.  In
    vec4_generator, we consult this value when converting an abstract
    UNIFORM register to a concrete hardware register.  And in the code
    that emits 3DSTATE_VS, we set dispatch_grf_start_reg based on the
    value recorded in prog_data.
    
    This will allow us to set dispatch_grf_start_reg to the appropriate
    value when compiling geometry shaders.  Vertex shaders will continue
    to always use a dispatch_grf_start_reg of 1.
    
    v2: Make dispatch_grf_start_reg "unsigned" rather than "GLuint".
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=72168f5f0069b2a0d8a2434ba80f4446952e84c7
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Aug 14 17:20:04 2013 -0700

    i965/vec4: Move vec4 data structures and functions to brw_vec4.{cpp,h}.
    
    This patch moves the following things into brw_vec4.{cpp,h}:
    
    - struct brw_vec4_compile
    - struct brw_vec4_prog_key
    - brw_vec4_prog_data_compare()
    - brw_vec4_prog_data_free()
    
    This will allow us to avoid having to include brw_vs.h in
    geometry-shader-specific files.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e556286802811b4b99c692d1ff5197f8ee1f011b
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Aug 21 07:53:42 2013 -0700

    i965: Make brw_{shader,vec4}.h safe to include from C.
    
    The patch that follows will move the definition of struct
    brw_vec4_prog_key from brw_vs.h to brw_vec4.h, making it necessary for
    brw_vs.h to include brw_vec4.h (because brw_vs.h defines struct
    brw_vs_prog_key, which contains brw_vec4_prog_key as a member).  Since
    brw_vs.h is included from C source files, that means that brw_vec4.h
    will need to be safe to include from C.  Same for brw_shader.h, since
    it is included by brw_vec4.h.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5fb13d871e062354a77a427b3a3fe7f3d6908e5a
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Mar 20 11:54:33 2013 -0700

    i965: Stop including brw_vs.h from brw_vec4.h.
    
    This is backwards from what we are going to want in the long term, which is:
    
    - brw_vec4.h declares general-purpose vec4 infrastructure needed by
      both VS and GS
    - brw_vs.h includes brw_vec4.h and adds VS-specific parts.
    - brw_gs.h includes brw_vec4.h and adds GS-specific parts.
    
    Note that at the moment brw_vec.h contains a fair amount of
    VS-specific declarations--I plan to address that in a later patch.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=52bac6e4ffb898d2222a59c9ee3c8d0a46426e20
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Mon Jun 10 10:29:20 2013 -0700

    i965: Initialize all elements of ctx->ShaderCompilerOptions.
    
    Otherwise any GS that requires lowering (e.g. one that uses
    gl_ClipDistance as an input or output) will fail to work.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=61a5bd8336aaf44b455407e0eb10caa1d031b358
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Mar 20 11:35:34 2013 -0700

    i965: Make brw_{program,vs}.h safe to include from C++.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ad65825098f2029c3853e0f1dbedd045acc05870
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Mar 20 11:35:34 2013 -0700

    mesa/program: Make prog_instruction.h and program.h safe to include from C++.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=44e07de3acb34152f68308f38c80c9885d8b2fcf
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Tue Jun 11 14:11:05 2013 -0700

    glsl: Refactor handling of gl_ClipDistance/gl_ClipVertex linkage rules for GS.
    
    This patch extracts the following logic from
    validate_vertex_shader_executable():
    
    (a) Generate an error if the shader writes to both gl_ClipDistance and
        gl_ClipVertex.
    
    (b) Record whether the shader writes to gl_ClipDistance in
        gl_shader_program for use by the back-end.
    
    (c) Record the size of gl_ClipDistance in gl_shader_program for use by
        transform feedback logic.
    
    And moves it into a function that is shared between vertex and
    geometry shaders.
    
    Strictly speaking we only need to have shared logic for (b) and (c)
    right now (since (a) only matters in compatibility contexts, and we're
    only implementing geometry shaders in core contexts right now).  But
    the three are closely related enough that it seems sensible to keep
    them together.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>




More information about the mesa-commit mailing list