[Mesa-dev] [PATCH v2 6/6] nvc0: Add support for NV_fill_rectangle for the GM200+

Ilia Mirkin imirkin at alum.mit.edu
Sat Apr 1 01:45:12 UTC 2017


I've pushed the amended series which fixed these trivial comments.
Thanks for your contribution!

On Thu, Mar 30, 2017 at 7:23 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Thu, Mar 30, 2017 at 5:40 PM, Lyude <lyude at redhat.com> wrote:
>> This enables support for the GL_NV_fill_rectangle extension on the
>> GM200+ for Desktop OpenGL.
>>
>> Signed-off-by: Lyude <lyude at redhat.com>
>>
>> Changes since v1:
>> - Fix commit message
>> - Add note to reldocs
>>
>> Signed-off-by: Lyude <lyude at redhat.com>
>> ---
>>  docs/relnotes/17.1.0.html                        | 1 +
>>  src/gallium/drivers/nouveau/nvc0/nvc0_3d.xml.h   | 3 +++
>>  src/gallium/drivers/nouveau/nvc0/nvc0_screen.c   | 3 ++-
>>  src/gallium/drivers/nouveau/nvc0/nvc0_state.c    | 4 ++++
>>  src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h | 2 +-
>>  5 files changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/docs/relnotes/17.1.0.html b/docs/relnotes/17.1.0.html
>> index ada1e38..e0014bb 100644
>> --- a/docs/relnotes/17.1.0.html
>> +++ b/docs/relnotes/17.1.0.html
>> @@ -48,6 +48,7 @@ Note: some of the new features are only available with certain drivers.
>>  <li>GL_ARB_transform_feedback2 on i965/gen6</li>
>>  <li>GL_ARB_transform_feedback_overflow_query on i965/gen6+</li>
>>  <li>Geometry shaders enabled on swr</li>
>> +<li>GL_NV_fill_rectangle on nvc0</li>
>
> Sort please.
>
>>  </ul>
>>
>>  <h2>Bug fixes</h2>
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_3d.xml.h b/src/gallium/drivers/nouveau/nvc0/nvc0_3d.xml.h
>> index 1be5952..accde94 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_3d.xml.h
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_3d.xml.h
>> @@ -772,6 +772,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
>>  #define NVC0_3D_VTX_ATTR_MASK_UNK0DD0_ALT__ESIZE               0x00000004
>>  #define NVC0_3D_VTX_ATTR_MASK_UNK0DD0_ALT__LEN                 0x00000004
>>
>> +#define NVC0_3D_FILL_RECTANGLE                                 0x0000113c
>> +#define NVC0_3D_FILL_RECTANGLE_ENABLE                          0x00000002
>> +
>>  #define NVC0_3D_UNK1140                                        0x00001140
>>
>>  #define NVC0_3D_UNK1144                                        0x00001144
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
>> index 945101b..f0e4e12 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
>> @@ -256,6 +256,8 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
>>        return nouveau_screen(pscreen)->vram_domain & NOUVEAU_BO_VRAM ? 1 : 0;
>>     case PIPE_CAP_TGSI_FS_FBFETCH:
>>        return class_3d >= NVE4_3D_CLASS; /* needs testing on fermi */
>> +   case PIPE_CAP_POLYGON_MODE_FILL_RECTANGLE:
>> +      return (class_3d >= GM200_3D_CLASS);
>
> Still unnecessary parens.
>
>>
>>     /* unsupported caps */
>>     case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
>> @@ -285,7 +287,6 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
>>     case PIPE_CAP_NATIVE_FENCE_FD:
>>     case PIPE_CAP_GLSL_OPTIMIZE_CONSERVATIVELY:
>>     case PIPE_CAP_INT64_DIVMOD:
>> -   case PIPE_CAP_POLYGON_MODE_FILL_RECTANGLE:
>>        return 0;
>>
>>     case PIPE_CAP_VENDOR_ID:
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_state.c b/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
>> index 32233a5..803843b 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
>> @@ -261,6 +261,10 @@ nvc0_rasterizer_state_create(struct pipe_context *pipe,
>>      SB_IMMED_3D(so, POINT_SPRITE_ENABLE, cso->point_quad_rasterization);
>>      SB_IMMED_3D(so, POINT_SMOOTH_ENABLE, cso->point_smooth);
>>
>> +    SB_IMMED_3D(so, FILL_RECTANGLE,
>> +                cso->fill_front == PIPE_POLYGON_MODE_FILL_RECTANGLE ?
>> +                NVC0_3D_FILL_RECTANGLE_ENABLE : 0);
>
> Oh, I forgot to mention this last time, but ... this will generate
> errors on pre-GM200 GPUs. Please stick this in a if (foo->class_3d >=
> GM204_3D_CLASS)
>
>> +
>>      SB_BEGIN_3D(so, MACRO_POLYGON_MODE_FRONT, 1);
>>      SB_DATA    (so, nvgl_polygon_mode(cso->fill_front));
>>      SB_BEGIN_3D(so, MACRO_POLYGON_MODE_BACK, 1);
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h b/src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h
>> index 054b1e7..3006ed6 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h
>> @@ -23,7 +23,7 @@ struct nvc0_blend_stateobj {
>>  struct nvc0_rasterizer_stateobj {
>>     struct pipe_rasterizer_state pipe;
>>     int size;
>> -   uint32_t state[42];
>> +   uint32_t state[43];
>>  };
>>
>>  struct nvc0_zsa_stateobj {
>> --
>> 2.9.3
>>


More information about the mesa-dev mailing list