On 17/11/14 13:32, Ilia Mirkin wrote:
Well, nvidia hw (pre-GM204; it seems like it's supported there now)
doesn't support setting gl_Layer from VS, so it's just not an option
there. However I do believe that the HW has enough support to handle
color masking as well as scissors, so I might try to add a PIPE_CAP
which indicates that pipe->clear can do it all. [First I'd have to
double-check that the nvidia hw really can support all this stuff
properly.]

I forgot to say it explicitely, but I meant supporting this on llvmpipe (or more accurately, in draw module.)

On the subject of strings -- yeah, parameterizing strings is annoying.
When parameters are involved, using ureg_* seems like the better way
to go. However for static shaders like this, it'll be hard to beat the
readability of a plain string. Either way, I was just copying the way
that the existing (gl_Layer-using) vertex shader was implemented.

Perhaps the decision of whether to do it one way or another can be
arrived at separately from this change?
Sure. I don't have any objection this going in as is, as it is consistent with what was done in there already. It was more a remark for future code.

Jose


   -ilia

On Mon, Nov 17, 2014 at 8:20 AM, Jose Fonseca <jfons...@vmware.com> wrote:
Hi Marek,

First of all, sorry for breaking Draw yesterday.
No problem. draw_llvm.c was really obfuscating the fact that it relied on the 
layout of the pipe_viewport_state.

There's also the OpenGL extension AMD_vertex_shader_layer which is
supported by all GS-capable Mesa drivers except for nouveau and
llvmpipe I think.
I see. It sounds we should try to support these things from vs then.

tgsi_parse is something else. Did you mean tgsi_text_translate?
Yes, I meant tgsi_text_translate.

I
don't like using ureg for helper shaders unless I have to. Shaders
written with ureg are harder to read and the code is longer. I've been
thinking of rewriting all simple shaders to text.
I don't think that's a good idea.

Besides all the reasons I said before, string constants are not convenient to 
parameterize.  One needs to have multiple versions of the text file, or use 
snprintf. either way quite ugly.

Regarding readability, if one has a comment before the code is just as 
readable. This is not what's done in u_simple_shaders.c, but we use this 
approach elsewhere and it works quite nicely:

    [...]

    /* DP3 TEMP.w, SRC, SRC */
    ureg_DP3(tbi->prog, temp_dst_w, src, src);

    /* RSQ TEMP.w, TEMP.w */
    ureg_RSQ(tbi->prog, temp_dst_w, temp_src_w);

    [...]


If people feel strongly about writing helper TGSI shaders in plain text, then 
we should create a simple off-line compilation tool that compiles the TGSI and 
creates *.h files (similar like DirectX HLSL tools).


Jose

PS: Apologies for quoting only parts of the email. I'm sort of limited to using 
Outlook Web Access for email when working from home, and need to manually 
quote...

________________________________________
From: Marek Olšák <mar...@gmail.com>
Sent: 16 November 2014 15:51
To: Jose Fonseca
Cc: Ilia Mirkin; mesa-dev@lists.freedesktop.org; 10.3 10.4
Subject: Re: [Mesa-dev] [PATCH] st/mesa: add a fallback for clear_with_quad 
when no vs_layer

Hi Jose,

First of all, sorry for breaking Draw yesterday.

On Sun, Nov 16, 2014 at 2:57 PM, Jose Fonseca <jfons...@vmware.com> wrote:
Fun fact -- llvmpipe also needs this.
I think this is because this functionality was developed with D3D10 in mind, and

https://urldefense.proofpoint.com/v2/url?u=http-3A__msdn.microsoft.com_en-2Dgb_library_windows_desktop_bb509647.aspx&d=AAIBaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=W_WiVknXaiEWMUhwH9NoKnxZ7SZQGp1B1VyLSBhv0rU&s=hwsRL-R8OHz5lpkwIvnmSRlHe-ijQAReKLFMkeVDWHM&e=

states that SV_RenderTargetArrayIndex "an be written from the geometry shader and 
read by the pixel shader."
There's also the OpenGL extension AMD_vertex_shader_layer which is
supported by all GS-capable Mesa drivers except for nouveau and
llvmpipe I think.


BTW, coding these helper shaders as text is not a great idea IMO:

- The tgsi_parse thing was written for debugging purposes mainly.

- Whenever there are TGSI interface changes, any breakage with ureg will cause 
compile errors, where as it will only be detected at runtime with TGSI

- ureg module makes it really easy to write shaders.  It's not really much more 
work.
tgsi_parse is something else. Did you mean tgsi_text_translate? I
don't like using ureg for helper shaders unless I have to. Shaders
written with ureg are harder to read and the code is longer. I've been
thinking of rewriting all simple shaders to text.

Marek

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to