Xmas said:
demalion said:
The problem isn't what it
could do, it is what it
does (and does not) do. This seems self evident to me as everything I've mentioned that it should do, which included mentioning PS 1.4 and the OpenGL ATI fragment extension once at the very least, are things it could do.
From this, I really think you missed some things I said. Please recall the beginning of
this post (ending with a
).
The reason RightMark uses Cg is that the developers wanted to use a HLSL and they wanted to target both OpenGL and D3D. Cg is the only available product fulfilling those requirements.
I think you need to re-read
this post and
this post from me.
I think you should because you are replying as if my own statements do not include such in their considerations...an example:
demalion said:
If it is a Cg benchmark, it is a Cg benchmark, but that's what it should be called because that really is not representative of DX 9's tools for achieving the same thing at this time. If it is a DX 9 HLSL and Cg benchmark, that's even a good thing I think. I actually think this is quite possible, since I seem to remember PS 1.4 support in the prior releases.
Xmas said:
While I don't think it's an optimal choice for a benchmark, I still think it's a viable decision.
I think your statement here is contradicts those you made which prompted me to address your comments, as evident in several places in our discussion. including the above excerpt from a reply of mine disagreeing with you...for example:
[url=http://www.beyond3d.com/forum/viewtopic.php?p=111014&#111014 said:
Xmas[/url]]
Ratchet said:
I'm not going to claim that I know even a fraction of what most of the people here know about video hardware and all that... but a benchmark that uses Cg? Seems like that would invalidate the whole purpose of a benchmark in the first place, would it not?
Why? If they use the generic profiles, I don't see a problem here. It's not much different from using the DX9 HLSL compiler.
This sentiment has been consistently present in your discussion, including your argument that the low level compiler should be able to handle any compiler's code equally well (hence the branch of our discussion indicating how that is counter to what is indicated to be the case in reality). Your conclusion has remained the same, but you are stating the premise differently here, while your argument still follows the statement you made in this quote.
In the light of using Cg to save a lot of work, implementing support for DX9 HLSL, given the similarity to Cg, seems to be reasonably easy to do. So it lends itself to being the next step when they got some time at their hands.
I again refer you to my prior statements addressing this. I'll quote some pertinent highlights shortly.
I do not expect them to leave their HLSL path, actually I think they should stick to it (HLSL in general, not necessarily Cg).
Well, then it has the flaw of not representing the technical abilities of all cards, as I've also stated prior.
Consequently, there will be no support for ATI's "PS1.4" OpenGL extension. But that's not NVidia's fault.
That Rightmark has this flaw as a general benchmark, as opposed to an nVidia card benchmark, is not nVidia's fault? That's true. But it does represent
a fault in Cg that invalidate its use for representative cross vendor benchmarking.
As for the authors of Rightmark, note a prior comment on my part:
[url=http://www.beyond3d.com/forum/viewtopic.php?p=111449&#111449 said:
demalion[/url]]
It lists "ARB" and "Native", so yes, and there are shaders for fixed, partial, and full precision (this is referring to the synthetic tests). Don't know what the scenes (game scenes, in the context of Cg as being discussed in the post) look like, I don't have hardware that supports any of Cg's targets. If they supported DX 9 HLSL they would have done as much as could be reasonably expected for the time being with limited resources.
Restatement of the above commentary in the context of the discussion in which it was made:
[url=http://www.beyond3d.com/forum/viewtopic.php?p=111653&#111653 said:
demalion[/url]]The authors of Rightmark 3D support DX 9 HLSL (ignoring for the moment that the shaders in the .cg files seem short and able to be ported to the ATI fragment extension for OpenGL and the 8500/900). This is what I referred to earlier as being as much as could be reasonably expected with limited resources (i.e., flawed, but potentially useful).
And there will be no other compiler besides Cg until OpenGL2.0 finally arrives. But that's, again, not NVidia's fault.
True, but the entire context of convenience of the Rightmark3D developers and representative benchmarking was already addressed. Please take a look at the shader files in question and note that they are not necessarily onerous to implement at low level, and that DX9 HLSL usage to generate a PS 1.4-alike template might make it simpler still. Again, they are short enough that I don't think even that would be required except for comparison.
I hope they will support GLslang when it's available, and that will put an end to this discussion as GLslang doesn't target any intermediate assembly stage. But that's something for the next version of RightMark.
I'll point out that the beginning of this discussion is due to Rightmark existing in this state now. Note the pertinence of commentary in my prior discussion
Also, Glslang will not put an end to this discussion, just circumvent the reason for Rightmark 3D to have the reason you propose to use Cg (a reason of convenience: the tools to express functionality in OpenGL exist beyond Cg).
Actually, as far as just ATI and nVidia, if a text file can be used to specify the R200 OpenGL extension, providing support for implementing that for the game tests (and doing this and the equivalent for the applicable nVidia OpenGL extensions for the synthetic tests) would be a significant step. Heck, within the context of being an "Open Source benchmark", just adding support for reading in user viewable and modifiable files representing low level instruction shaders to be applied to the tests, for both OpenGL, and Direct X (already done for synthetics, needs to be for game tests) for all the cards for which it claims to be applicable, would remove the flaw I mention, once those files were actually included and reviewed.
As I said earlier, that's why I'm not on a "Rightmark3D bashing" bandwagon, but on a "Rightmark 3D has issues that need to be address" bandwagon.
.
The situation for OpenGL is: there is no HLSL other than Cg. And as the only cards suited for Cg compiled shaders in OpenGL are those supporting PS2.0/ARB fragment shader level, we can probably conclude that those game tests using Cg require that level of hardware, like the Mother Nature scene does.
Why are talking as if I hadn't address this exact point already? Ack!! I've reached my quote cuttof for the night, heh, you can find go find it yourself...it really isn't too hard to spot, and is probably represented atleast once in what I link to above.
So there would be no point in trying to support other extensions here.
You keep on making arbitrary stipulations and then proposing a conclusion based on them, even after I've provided direct opportunity to discuss why I think the stipulation is mistaken, or have provided evidence and analysis specificaly indicating the opposite of the stipulation.
When you want to benchmark that kind of functionality, supporting hardware/extensions with reduced functionality is not an option.
You then go on to base a definitive statement on your stipulation as if you've established it as factual, and also circumventing discussion, as repeated just above, of what has been actually been observed. In this case, I have only my own observation, but the actual shader files are available to you, and anyone, to dispute my interpretation...yet you do this instead.
Even so, again for this particular part of the discussion, I have a whole line of other discussion that I've been repeating several times, that remains applicable even if my observation is in question, yet we never get to discuss it because you propose statements without basis instead.
You would only put a lot of work into something which would not be equivalent to "the real thing" and give you skewed results.
By this you seem to state that they are justified in using Cg for convenience because the results can't be skewed, which again contradicts what you proported to recognize about HLSL at the beginning of your post.
As for the other tests that don't use Cg, do we have any information on which extensions/render path they use in OpenGL?
They don't as far as I know and have been able to ascertain by running it, and by looking at files in its directory. As I already outlined by pointing out that I only saw files with names indicating DirectX shader functionality.
That's the type of comment that causes me to refer you to previous posts.
I understand from your prior comment about waiting for Rightmark3D to download that you might not have it available to view for yourself yet, but that shouldn't stop you from recognizing my observation in the meantime.
There is a switch in Rightmark labelled "preferred extensions" which provides the choice between "ARB" and "native". Now wouldn't it be sensible to use that switch not only to decide wether to use either NV30 or ARB fragment shader extensions for Cg, but also to decide which extensions to use for those tasks that do not involve "shading", or in all the other tests? Be it the fragment and vertex paths specific to ATI, NVidia, Matrox, or any other vendor. Or the different vertex object/vertex buffer extensions, for example.
You keep asking questions to which I think my answer has been obviously stated. i.e.,
YES. This, I feel, was completely covered in our prior "The problem is not what it could do, but what it does do" discussion you just quoted!
You seem to preclude that this switch does more than setting the Cg profile to either ARBFP or NV30FP.
And that is based on what I actually observed...Ack! The list for the Synthetic tests include PS 1.4 and VS 1.1, which
can be expressed using existing OpenGL extensions for the 8500,
and yet there is no option listed to target OpenGL. Also, the game tests seem to be only expressed using Cg, and to be the only tests for which the OpenGL tab applies (following from the above). Therefore, the switch does nothing more "than setting the Cg profile to either ARBFP or NV30FP".
This is a repeat of information directly stated in my prior posts.
This fits the template of what you asked me to clarify later, and is not unique to this post.
But even if it does not, I would still be interested in the different results.
That's fine for a nv30 evaluation.
That's why I think having such an option is always good. Not because it means better results for one chip or another, but because it gives additional data for technical performance analysis of a chip.
Yes, as long as it doesn't propor to represent results between different chips that are not represented as equivalently as possible for a given standard, or set of standards. OpenGL and Direct X are such standards, Cg is not, except for the nVidia hardware, and it is wrong for Rightmark 3D to use it in place of such and represent itself as benchmarks for them. Again, this is a restatement of my prior posts.
As for the solid black window - well, this is a beta version. Seeing a black window isn't really surprising, nor does it give any conclusive proof about extension usage.
That's an observed result that confirms my conclusion, which were in turn based on observations already repeatedly outlined, and you can evaluate that for yourself, just please recognize that it exists, please.
It is not presented as "conclusive proof".
Actually you're lucky, I don't get this beta to run any test at all
And it screws my gamma settings
So you do have it? Tell me if you find indication of OpenGL being used for the synthetic tests, and then we can discuss this particular issue in relation to the synthetic tests with some hope of not being circular. My line of reasoning is above, as well as my answer to what I think of it if you do indeed find such indication.
demalion said:
I don't think they need "solutions", but supporting DX9 HLSL in parallel would certainly be nice to see.
Hmm...well your above comments seem to indicate you are thinking things that are simply not true at all, as far as I understand you.
What things do you mean?
One example
highlighted above, which applies to what you have presented before. Your assertions relating to good assembly and low level optimizers being able to handle any code thrown at them are also things I believe I have given good indication were simply not true as well, by example and analysis, among other things we've tried to discuss.
demalion said:
demalion said:
To the DX 9 PS 2.0 spec, as I specifically stated.
Sorry, but the DX9 PS 2.0 spec only says what kinds of shaders are
valid shaders, not what kinds of shaders are
good shaders. So when writing a shader you have lots of options, but no indication of whether you're on the right track or not.
Yeah, and API's only specify what kind of programs are valid, not what kind are good programs. Your statement is misleading, since you are proposing that there is no relation to the specification of the instructions and modifiers, and then subsequently what is a good method of executing them. That is simply not true.
For instance, the DX 9 PS 2.0 specification does
not specify that two non texture op instructions from a restricted set occur for each PS 2.0 instruction or texture op. This is a possible occurrence, but depending on it to occur for optimal performance is not a good method of execution.
Yep. That's the point. It does not specify it.[/quote]
By this you state that because the LLSL does not specify you can
NOT do this, it doesn't matter that Cg has unique reason to do this for the nv30 and that this is not significant. Again, your actual argument contradicts the statement you intially proposed as defining (in this post, atleast) your stance on using Cg in this way.
This is the type of thing that prompts me to ask you to make up your mind, and I don't think I ask that unfairly.
Xmas said:
the DX9 PS 2.0 spec only says what kinds of shaders are valid shaders, not what kinds of shaders are good shaders.
I was not talking about what is a good way to execute it. I was specifically talking about whether you can determine if a shader is "good" or "not so good"
without executing it, only with the help of the specification.
Your comment seems to be based on the pretext that you can't determine whether a specific shader is a good way of executing the function without actually executing it, as that is the only case I can see in which those two sentences do not completely contradict each other, assuming compilers can actually optimize.
If you can not, you also can not state that it is off the base spec.
If you can, you have found a valid metric for shader code quality.
I'll throw in a
highlight here because I think this illustrates the same issue of ignoring my discussion and things that seem to me are already readily evident.
This is the type of comment that prompts me to refer to my 4x4 and 8x1 by parallel which I consider particularly illustrative of the fallacy of what you propose is the case among those two.
I don't say it does not matter. But I think it's acceptable if the generated shader is either "good" or "indeterminable" according to what I said above.
Then you
are saying the HLSL compiler used does not matter for your definition of "acceptable".
There are just too many conflicts in your statements left unresolved.
demalion said:
We are talking about a high level compiler, Xmas. What do you think Cg is using to output to PS 2.0? You are circumventing the simple observation that compilers produce different code, by saying you are only talking about the code.
I am talking about code regardless where it came from.
Simply because where it came from doesn't make it better or worse.
If I had an Exorcist emote (without the overt hostility of something disgusting like vomiting, to keep things civil
), this would be the place it belonged.
I think my above comment about unresolved contradictions applies.
Whether I write it in assembly or a compiler generates it, if it's the same code, it's the same code. Compilers produce different code, I'm aware of this.
Please search for my comments along the lines of "you can hand code bad code, compile bad code with Cg, or compile bad code with HLSL" or something like that, as I would have to do quote it for you to address this sentiment again.
Why didn't you address my instruction example at all? If it has flaws, it would be useful to discuss where I went wrong. If it doesn't, it seems more than slightly applicable.
It would be good if you could clear up the issue on the add taking 2 cycles. I doubt that, but maybe you can show me proof of the opposite.
No highlight is suitable now, because we're actually discussing this usefully now, albeit it took a while to start doing so. Response in the other post (didn't take me long to reply, but I'm posting this first for chronological consistency).
To state it clearly: I don't doubt that there is code which gives NV30 an advantage over R300 compared to other code that performs better on R300. I don't doubt you could find code with exactly the same characteristics as in your example.
But this is a two-sided argument, it also means I don't doubt there is code which gives R300 an advantage over NV30 compared to other code that performs better on NV30.
OK, this is another place for the head spinning emote I wish I had. Please put 4x4 and 8x1 as example substitutes into your discussion above, and refer to my prior comments to aid in illustrating, again, the fallacy of your statement.
Given we have such shaders, if we cannot determine, according to the PS2.0 assembly spec, which one is "better", then it is ok to use either of them IMO.
This is based on the spec not explicitly stating how you should code, therefore you can't make an assumption about what is general case or not, nevermind the simple observation that "the more unique restrictions on the code structure you entail, the less general case it is".
If we can determine the "better" shader, that one should be used and the other one is only useful for specific optimizations. This might be applicable to your example.
I've already discussed this in depth, including example optimizations which you have not recognized in making this statement (which reminds me that a
highlight might be helpful to address your maintaining that this is not the case).