..:: PCSX2 Forums ::..

Full Version: ZZogl -- Zero GS KOSMOS fork
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
download from the beta section from the main page.

unless you know how to use subversion and then compile everything.
By the way, I realise SkipDraw functionallity, but it seems to doing nothing at all.

On Gabest code skipdraw activated one 2 cases: texture is z-texture, and this case is incorrect (it's old improper realisation, and for ZZogl it made some difference, but nothing noticiable) and if frame and texture "shared bits". It's interesting case: either frame and texture have the same staring adress (but ZZogl made more complicated mechanism for intesecting targets than simple skip) not frame and texture is "completable", so could be placed in the same memory region.

It's possible, because PSMT24, PSMT8H, PSMT4HL, PSMT4HH and PSMT24Z formats have "unused" bits, that could be used by another formats. But I could not find such occasion in most trioublesome games I try.
Me too I done somethings. Fairly basic. And without understand some parts Smile

Note there are 2 skipdraw mode, "user setup" and the others is "automatic crc detection". Did you test the automatic mode ?

I only check FFX without success (manual mode). In the comment they said to use the user setup with value '1' but I did not implement the shared stuff.

Edit: One others question did you use curvb.gsfb or curvb.frame ?
frame and gsfb is almost the same. gsfb -- result form registers. frame become gsfb on constrains addition functions. Constrains are height/width change of frame. "Automatic" crc set default SkipDraw for listed game, nothing usefull.
As far I understand, automatic crc have some different conditions. Besides we have a little guarantee that the code do somethings good (versus the user value).

I add the shared stuff, in FFX the user path is called. I get a little slide show, because it seem to drop too much frame with value 1 (I will say 1/2 without measure). The picture seem to be a little better but hard to say.

If you looked with the automatic value, you will see sometimes big value 60, 100... Dropping 100 frames would lead to a 2s freeze. My point is : is zzogl flush the same things (quantity of informations) that gsdx ?
No, ZZogl flush and GSDX draw are different. Automatic crc doing skipping according to the moon phases. And skipping more than 1000 flushes without real flush() could made videocard memory overflow.

p.S. When you skip slush, don't you forget to set nCount to 0?

p.p.S fbmsk is ~curvb.frame.fbm.
Yes I did the 2 PS. By the way I create a branch with the code I have done (it is hackish, but it more to test if we can implement it on zzogl). It will be easier to work on it. Note I set the default value to 0 for the moment.

Another little question. The is 2 context to flush. Is there somethings like a back buffer and a front buffer or it is anothers things ?
Nah, ignore context. I do GSDX porting into r214. Try it. (r215 have skipdraw disabled).
I have a failure on the following assertion (gow, grandia2):
ZZoglFlush.cpp:2355: void ZeroGS:WackoetTexVariablesInt(int, int, const tex0Info&, ZeroGS::CMemoryTarget*, FRAGMENTSHADER*, int): Assertion `fblockstride >= 1.0f' failed.

glGetIntegerv(GL_MAX_TEXTURE_SIZE, &g_MaxTexWidth); -> said my graphics card support 4k*4k texture (do not know if is it standard or if my CG is too recent). Some google sait it is not safe to use this value. http://www.opengl.org/resources/faq/technical/texture.htm (see 21.130).

Anyway. If the formula is correct and the assert good. Maybe you could limit texture support (see below).

Any idea ?

-----------------------------------------------
Index: pcsx2.snapshot-3671/plugins/zzogl-pg/opengl/ZZoglCreate.cpp
@@ -494,6 +492,7 @@
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &g_MaxTexWidth);
+ g_MaxTexWidth = min(8192, g_MaxTexWidth);

-----------------------------------------------
Some details:
float fblockstride = (2048.0f / (float)(GPU_TEXWIDTH * (float)pmemtarg->widthmult * BLOCK_TEXWIDTH)) * b.vTexDims.x * fbw; -> give 0.5

GPU_TEXWIDTH:2048
widthmult:1
x:1.000000
fbw:64.000000
BLOCK_TEXWIDTH:128
Limit GPU_TEXWIDTH with 8196/8 in ZZoglCreate.cpp. I think we could even limit it with 4096/8,