[Mesa-dev] [PATCH 11/21] nouveau: Enable vertex programs

Francisco Jerez currojerez at riseup.net
Tue Aug 30 16:01:28 PDT 2011


Ian Romanick <idr at freedesktop.org> writes:

> On 08/30/2011 03:39 AM, Francisco Jerez wrote:
>> "Ian Romanick" <idr at freedesktop.org> writes:
>>
>>> From: Ian Romanick <ian.d.romanick at intel.com>
>>>
>>> Specifically, the following extensions are enabled:
>>>
>>>     GL_ARB_vertex_program
>>>     GL_EXT_gpu_program_paramaters
>>>     GL_NV_vertex_program
>>>     GL_NV_vertex_program1_1
>>>
>>> In addition, ctx->Const.MaxCombinedTextureImageUnits is set.
>>>
>>> This has been compiled, but I don't have any nv10 or nv20 hardware to
>>> test.  I only have nv02, nv03, and nv05.  This is the last swtnl that
>>> doesn't already have vertex programs enabled.  The enable code was
>>> mostly copied from the (now removed) mga driver.
>>>
>> I'm not convinced that this makes sense. Vertex programs aren't
>> functional on nv2x at this moment, and on nv1x they probably never will
>> because there's no hardware support for it.
>
> Right.  It's the same as for r100, i830, i915, and several of the
> recently removed DRI1 drivers.  For what it's worth, NVIDIA used to
> support vertex programs all the way back to Riva TNT (NV03) in their
> Windows drivers.
>
Yeah, IIRC their linux drivers do the same as well, though that doesn't
imply it's the right thing to do. Roughly how many LOC of conditional
code are you planning to remove as a result of this in the long run?

> The main reason for doing this is that it allows us to make vertex
> program support non-optional.  Once that happens, a lot of conditional
> code elsewhere in the stack can be removed.  That has been a bit
> contentious, so I'll probably hold off on this patch until those other
> issues are resolved.
>
I see... Anyway this patch wouldn't be enough to get these extensions
working on nouveau, we'd still need to fix the fallback-to-swtnl logic
for that case.

>>> Cc: Ben Skeggs <bskeggs at redhat.com>
>>> Cc: Francisco Jerez <currojerez at riseup.net>
>>> Cc: Viktor Novotný <noviktor at seznam.cz>
>>> ---
>>>  src/mesa/drivers/dri/nouveau/nouveau_context.c |    4 ++++
>>>  src/mesa/drivers/dri/nouveau/nv10_context.c    |    3 +++
>>>  src/mesa/drivers/dri/nouveau/nv20_context.c    |    3 +++
>>>  3 files changed, 10 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c
>>> index 1c35578..f713078 100644
>>> --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c
>>> +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c
>>> @@ -119,6 +119,7 @@ nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen,
>>>  	/* Enable any supported extensions. */
>>>  	ctx->Extensions.ARB_multitexture = true;
>>>  	ctx->Extensions.ARB_texture_mirrored_repeat = true;
>>> +	ctx->Extensions.ARB_vertex_program = true;
>>>  	ctx->Extensions.EXT_blend_color = true;
>>>  	ctx->Extensions.EXT_blend_logic_op = true;
>>>  	ctx->Extensions.EXT_blend_minmax = true;
>>> @@ -126,6 +127,7 @@ nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen,
>>>  	ctx->Extensions.EXT_fog_coord = true;
>>>  	ctx->Extensions.EXT_framebuffer_blit = true;
>>>  	ctx->Extensions.EXT_framebuffer_object = true;
>>> +	ctx->Extensions.EXT_gpu_program_parameters = true;
>>>  	ctx->Extensions.EXT_packed_depth_stencil = true;
>>>  	ctx->Extensions.EXT_secondary_color = true;
>>>  	ctx->Extensions.EXT_stencil_wrap = true;
>>> @@ -135,6 +137,8 @@ nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen,
>>>  	ctx->Extensions.EXT_texture_lod_bias = true;
>>>  	ctx->Extensions.NV_blend_square = true;
>>>  	ctx->Extensions.NV_texture_env_combine4 = true;
>>> +	ctx->Extensions.NV_vertex_program = true;
>>> +	ctx->Extensions.NV_vertex_program1_1 = true;
>>>
>>>  	return GL_TRUE;
>>>  }
>>> diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c
>>> index da0ef2b..d6f8fcb 100644
>>> --- a/src/mesa/drivers/dri/nouveau/nv10_context.c
>>> +++ b/src/mesa/drivers/dri/nouveau/nv10_context.c
>>> @@ -442,6 +442,9 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua
>>>  	ctx->Const.MaxTextureCoordUnits = NV10_TEXTURE_UNITS;
>>>  	ctx->Const.MaxTextureImageUnits = NV10_TEXTURE_UNITS;
>>>  	ctx->Const.MaxTextureUnits = NV10_TEXTURE_UNITS;
>>> +	ctx->Const.MaxCombinedTextureImageUnits =
>>> +	   ctx->Const.MaxVertexTextureImageUnits +
>>> +	   ctx->Const.MaxTextureImageUnits;
>>>  	ctx->Const.MaxTextureMaxAnisotropy = 2;
>>>  	ctx->Const.MaxTextureLodBias = 15;
>>>  	ctx->Driver.Clear = nv10_clear;
>>> diff --git a/src/mesa/drivers/dri/nouveau/nv20_context.c b/src/mesa/drivers/dri/nouveau/nv20_context.c
>>> index 2766851..5016568 100644
>>> --- a/src/mesa/drivers/dri/nouveau/nv20_context.c
>>> +++ b/src/mesa/drivers/dri/nouveau/nv20_context.c
>>> @@ -455,6 +455,9 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua
>>>  	ctx->Const.MaxTextureCoordUnits = NV20_TEXTURE_UNITS;
>>>  	ctx->Const.MaxTextureImageUnits = NV20_TEXTURE_UNITS;
>>>  	ctx->Const.MaxTextureUnits = NV20_TEXTURE_UNITS;
>>> +	ctx->Const.MaxCombinedTextureImageUnits =
>>> +	   ctx->Const.MaxVertexTextureImageUnits +
>>> +	   ctx->Const.MaxTextureImageUnits;
>>>  	ctx->Const.MaxTextureMaxAnisotropy = 8;
>>>  	ctx->Const.MaxTextureLodBias = 15;
>>>  	ctx->Driver.Clear = nv20_clear;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 229 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20110831/da238aba/attachment.pgp>


More information about the mesa-dev mailing list