From 06570ea7ad93cdd659980bdda3485bc29c6ac64a Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 11 Feb 2020 16:49:45 +0000 Subject: [PATCH] Remove backbuffer comparisons from test suite, simplify default triangle * It's not particularly scalable and can be brittle to driver changes, and we can use targeted specific pixel tests to check what we really want - to see if the output has rendered correctly. * Overlay tests still check files directly - this is a future refactor to remove. --- .../data/D3D11_Overlay_Test/backbuffer.png | Bin 3851 -> 0 bytes .../D3D11_Primitive_Restart/backbuffer.png | Bin 9693 -> 0 bytes .../D3D11_Resource_Lifetimes/backbuffer.png | Bin 6591 -> 0 bytes .../data/D3D11_Simple_Triangle/backbuffer.png | Bin 8545 -> 0 bytes .../data/D3D12_Overlay_Test/backbuffer.png | Bin 3851 -> 0 bytes .../D3D12_Resource_Lifetimes/backbuffer.png | Bin 6591 -> 0 bytes .../data/D3D12_Simple_Triangle/backbuffer.png | Bin 8545 -> 0 bytes util/test/data/GL_DX_Interop/backbuffer.png | Bin 1430 -> 0 bytes util/test/data/GL_Overlay_Test/backbuffer.png | Bin 3851 -> 0 bytes .../data/GL_Resource_Lifetimes/backbuffer.png | Bin 2462 -> 0 bytes .../data/GL_Simple_Triangle/backbuffer.png | Bin 8545 -> 0 bytes util/test/data/GL_VAO_0/backbuffer.png | Bin 4872 -> 0 bytes util/test/data/VK_Indirect/backbuffer.png | Bin 7204 -> 0 bytes util/test/data/VK_Int8_IBuffer/backbuffer.png | Bin 9693 -> 0 bytes util/test/data/VK_Overlay_Test/backbuffer.png | Bin 3851 -> 0 bytes .../data/VK_Resource_Lifetimes/backbuffer.png | Bin 6591 -> 0 bytes .../data/VK_Secondary_CmdBuf/backbuffer.png | Bin 9362 -> 0 bytes .../data/VK_Simple_Triangle/backbuffer.png | Bin 8545 -> 0 bytes util/test/demos/d3d11/d3d11_1_many_uavs.cpp | 2 +- .../demos/d3d11/d3d11_array_interpolator.cpp | 2 +- .../d3d11/d3d11_byte_address_buffers.cpp | 2 +- util/test/demos/d3d11/d3d11_cbuffer_zoo.cpp | 2 +- .../demos/d3d11/d3d11_counter_query_pred.cpp | 2 +- util/test/demos/d3d11/d3d11_deferred_map.cpp | 2 +- .../d3d11_deferred_updatesubresource.cpp | 2 +- .../demos/d3d11/d3d11_divergent_shader.cpp | 2 +- util/test/demos/d3d11/d3d11_draw_zoo.cpp | 2 +- .../d3d11/d3d11_empty_compute_dispatch.cpp | 2 +- .../test/demos/d3d11/d3d11_empty_drawcall.cpp | 2 +- .../demos/d3d11/d3d11_empty_viewports.cpp | 2 +- util/test/demos/d3d11/d3d11_many_rtvs.cpp | 2 +- util/test/demos/d3d11/d3d11_map_overrun.cpp | 2 +- util/test/demos/d3d11/d3d11_mesh_zoo.cpp | 2 +- .../demos/d3d11/d3d11_midframe_create.cpp | 2 +- util/test/demos/d3d11/d3d11_mip_gen_rt.cpp | 4 +- util/test/demos/d3d11/d3d11_mip_rtv.cpp | 4 +- .../demos/d3d11/d3d11_overdraw_stress.cpp | 2 +- util/test/demos/d3d11/d3d11_overlay_test.cpp | 2 +- .../demos/d3d11/d3d11_primitive_restart.cpp | 28 +++---- .../test/demos/d3d11/d3d11_refcount_check.cpp | 2 +- .../demos/d3d11/d3d11_resource_lifetimes.cpp | 31 ++++++-- util/test/demos/d3d11/d3d11_saturate.cpp | 6 +- .../demos/d3d11/d3d11_shader_debug_zoo.cpp | 4 +- .../test/demos/d3d11/d3d11_shader_editing.cpp | 4 +- util/test/demos/d3d11/d3d11_shader_isa.cpp | 4 +- .../demos/d3d11/d3d11_simple_dispatch.cpp | 2 +- .../demos/d3d11/d3d11_simple_triangle.cpp | 4 +- util/test/demos/d3d11/d3d11_stream_out.cpp | 6 +- .../demos/d3d11/d3d11_stripped_shaders.cpp | 2 +- ...d11_structured_buffer_misaligned_dirty.cpp | 2 +- .../d3d11/d3d11_structured_buffer_nested.cpp | 2 +- .../d3d11/d3d11_structured_buffer_read.cpp | 2 +- util/test/demos/d3d11/d3d11_texture_3d.cpp | 2 +- util/test/demos/d3d11/d3d11_texture_zoo.cpp | 2 +- .../d3d11_untyped_backbuffer_descriptor.cpp | 2 +- .../demos/d3d11/d3d11_vertex_attr_zoo.cpp | 2 +- .../test/demos/d3d11/d3d11_video_textures.cpp | 2 +- util/test/demos/d3d12/d3d12_cbuffer_zoo.cpp | 4 +- util/test/demos/d3d12/d3d12_mesh_zoo.cpp | 2 +- util/test/demos/d3d12/d3d12_overlay_test.cpp | 2 +- .../demos/d3d12/d3d12_resource_lifetimes.cpp | 28 +++++-- .../demos/d3d12/d3d12_shader_debug_zoo.cpp | 4 +- .../test/demos/d3d12/d3d12_shader_editing.cpp | 4 +- util/test/demos/d3d12/d3d12_shader_isa.cpp | 4 +- .../demos/d3d12/d3d12_simple_triangle.cpp | 4 +- util/test/demos/d3d12/d3d12_test.cpp | 3 + util/test/demos/d3d12/d3d12_texture_zoo.cpp | 4 +- .../d3d12_untyped_backbuffer_descriptor.cpp | 2 +- .../demos/d3d12/d3d12_vertex_attr_zoo.cpp | 2 +- .../test/demos/d3d12/d3d12_video_textures.cpp | 2 +- .../demos/d3d12/d3d12_write_subresource.cpp | 2 +- util/test/demos/gl/gl_buffer_spam.cpp | 2 +- util/test/demos/gl/gl_buffer_updates.cpp | 2 +- util/test/demos/gl/gl_callstacks.cpp | 2 +- util/test/demos/gl/gl_cbuffer_zoo.cpp | 2 +- util/test/demos/gl/gl_depthstencil_fbo.cpp | 2 +- util/test/demos/gl/gl_dx_interop.cpp | 10 +-- util/test/demos/gl/gl_entry_points.cpp | 2 +- util/test/demos/gl/gl_large_bcn_arrays.cpp | 2 +- util/test/demos/gl/gl_map_overrun.cpp | 2 +- util/test/demos/gl/gl_mesh_zoo.cpp | 2 +- .../demos/gl/gl_midframe_context_create.cpp | 2 +- util/test/demos/gl/gl_mip_gen_rt.cpp | 2 +- util/test/demos/gl/gl_multi_window.cpp | 2 +- util/test/demos/gl/gl_overlay_test.cpp | 2 +- util/test/demos/gl/gl_per_type_tex_units.cpp | 2 +- util/test/demos/gl/gl_resource_lifetimes.cpp | 13 ++-- .../demos/gl/gl_runtime_bind_prog_to_pipe.cpp | 2 +- .../demos/gl/gl_separable_geometry_shader.cpp | 2 +- util/test/demos/gl/gl_shader_editing.cpp | 2 +- util/test/demos/gl/gl_shader_isa.cpp | 2 +- util/test/demos/gl/gl_simple_triangle.cpp | 2 +- util/test/demos/gl/gl_spirv_shader.cpp | 2 +- .../demos/gl/gl_structured_buffer_nested.cpp | 2 +- util/test/demos/gl/gl_texture_zoo.cpp | 2 +- .../demos/gl/gl_unsized_ms_fbo_attachment.cpp | 2 +- util/test/demos/gl/gl_vao_0.cpp | 2 +- util/test/demos/gl/gl_vertex_attr_zoo.cpp | 2 +- util/test/demos/test_common.cpp | 4 +- util/test/demos/vk/vk_adv_cbuffer_zoo.cpp | 2 +- util/test/demos/vk/vk_cbuffer_zoo.cpp | 2 +- util/test/demos/vk/vk_descriptor_index.cpp | 2 +- util/test/demos/vk/vk_discard_rects.cpp | 2 +- util/test/demos/vk/vk_draw_zoo.cpp | 2 +- util/test/demos/vk/vk_ext_buffer_address.cpp | 2 +- util/test/demos/vk/vk_image_layouts.cpp | 2 +- .../demos/vk/vk_imageless_framebuffer.cpp | 2 +- util/test/demos/vk/vk_indirect.cpp | 50 ++++++------ util/test/demos/vk/vk_int8_ibuffer.cpp | 26 +++---- util/test/demos/vk/vk_khr_buffer_address.cpp | 2 +- util/test/demos/vk/vk_line_raster.cpp | 2 +- util/test/demos/vk/vk_mesh_zoo.cpp | 2 +- util/test/demos/vk/vk_misaligned_dirty.cpp | 2 +- .../test/demos/vk/vk_multi_thread_windows.cpp | 2 +- util/test/demos/vk/vk_overlay_test.cpp | 2 +- util/test/demos/vk/vk_parameter_zoo.cpp | 4 +- util/test/demos/vk/vk_resource_lifetimes.cpp | 72 +++++++++++------- util/test/demos/vk/vk_sample_locations.cpp | 2 +- util/test/demos/vk/vk_secondary_cmdbuf.cpp | 14 ++-- util/test/demos/vk/vk_shader_editing.cpp | 2 +- util/test/demos/vk/vk_shader_isa.cpp | 4 +- util/test/demos/vk/vk_simple_triangle.cpp | 4 +- util/test/demos/vk/vk_spec_constants.cpp | 2 +- util/test/demos/vk/vk_spirv_13_shaders.cpp | 2 +- .../demos/vk/vk_structured_buffer_nested.cpp | 2 +- util/test/demos/vk/vk_texture_zoo.cpp | 2 +- util/test/demos/vk/vk_triangle_fan.cpp | 2 +- util/test/demos/vk/vk_truncated_cbuffer.cpp | 2 +- util/test/demos/vk/vk_vertex_attr_zoo.cpp | 2 +- util/test/demos/vk/vk_video_textures.cpp | 2 +- util/test/demos/vk/vk_vs_max_desc_set.cpp | 2 +- util/test/rdtest/testcase.py | 39 +++++++--- util/test/tests/D3D11/D3D11_Overlay_Test.py | 30 +++++++- .../tests/D3D11/D3D11_Primitive_Restart.py | 20 ++++- .../tests/D3D11/D3D11_Resource_Lifetimes.py | 45 ++++++++++- util/test/tests/D3D11/D3D11_Shader_Editing.py | 8 +- .../test/tests/D3D11/D3D11_Simple_Triangle.py | 10 ++- .../tests/D3D12/D3D12_Execute_Indirect.py | 16 +--- util/test/tests/D3D12/D3D12_Overlay_Test.py | 32 +++++++- .../tests/D3D12/D3D12_Resource_Lifetimes.py | 45 ++++++++++- util/test/tests/D3D12/D3D12_Shader_Editing.py | 8 +- .../test/tests/D3D12/D3D12_Simple_Triangle.py | 10 ++- util/test/tests/GL/GL_DX_Interop.py | 29 ++++++- util/test/tests/GL/GL_Overlay_Test.py | 30 +++++++- util/test/tests/GL/GL_Parameter_Zoo.py | 4 +- util/test/tests/GL/GL_Resource_Lifetimes.py | 45 ++++++++++- .../tests/GL/GL_Separable_Geometry_Shaders.py | 17 +++-- util/test/tests/GL/GL_Shader_Editing.py | 16 ++-- util/test/tests/GL/GL_Simple_Triangle.py | 10 ++- util/test/tests/GL/GL_VAO_0.py | 11 ++- util/test/tests/Vulkan/VK_Indirect.py | 25 +++++- util/test/tests/Vulkan/VK_Int8_IBuffer.py | 19 ++++- util/test/tests/Vulkan/VK_Overlay_Test.py | 30 +++++++- .../tests/Vulkan/VK_Resource_Lifetimes.py | 45 ++++++++++- util/test/tests/Vulkan/VK_Secondary_CmdBuf.py | 12 ++- util/test/tests/Vulkan/VK_Shader_Editing.py | 8 +- util/test/tests/Vulkan/VK_Simple_Triangle.py | 10 ++- 157 files changed, 769 insertions(+), 326 deletions(-) delete mode 100644 util/test/data/D3D11_Overlay_Test/backbuffer.png delete mode 100644 util/test/data/D3D11_Primitive_Restart/backbuffer.png delete mode 100644 util/test/data/D3D11_Resource_Lifetimes/backbuffer.png delete mode 100644 util/test/data/D3D11_Simple_Triangle/backbuffer.png delete mode 100644 util/test/data/D3D12_Overlay_Test/backbuffer.png delete mode 100644 util/test/data/D3D12_Resource_Lifetimes/backbuffer.png delete mode 100644 util/test/data/D3D12_Simple_Triangle/backbuffer.png delete mode 100644 util/test/data/GL_DX_Interop/backbuffer.png delete mode 100644 util/test/data/GL_Overlay_Test/backbuffer.png delete mode 100644 util/test/data/GL_Resource_Lifetimes/backbuffer.png delete mode 100644 util/test/data/GL_Simple_Triangle/backbuffer.png delete mode 100644 util/test/data/GL_VAO_0/backbuffer.png delete mode 100644 util/test/data/VK_Indirect/backbuffer.png delete mode 100644 util/test/data/VK_Int8_IBuffer/backbuffer.png delete mode 100644 util/test/data/VK_Overlay_Test/backbuffer.png delete mode 100644 util/test/data/VK_Resource_Lifetimes/backbuffer.png delete mode 100644 util/test/data/VK_Secondary_CmdBuf/backbuffer.png delete mode 100644 util/test/data/VK_Simple_Triangle/backbuffer.png diff --git a/util/test/data/D3D11_Overlay_Test/backbuffer.png b/util/test/data/D3D11_Overlay_Test/backbuffer.png deleted file mode 100644 index 69e126168c8daa1bef8d85bd84ca8afc0756f7cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3851 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 diff --git a/util/test/data/D3D11_Resource_Lifetimes/backbuffer.png b/util/test/data/D3D11_Resource_Lifetimes/backbuffer.png deleted file mode 100644 index d71d6ddec5b80f4bcef8a8305d490f1f8b3f85e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6591 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 CuHo+h diff --git a/util/test/data/D3D11_Simple_Triangle/backbuffer.png b/util/test/data/D3D11_Simple_Triangle/backbuffer.png deleted file mode 100644 index dbc5b8594389f98ae57bf922bffdefec9632f77c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8545 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 armf=_(pI5YZVvcvGuFSTN4ww>{(k^GSxZ6y diff --git a/util/test/data/D3D12_Overlay_Test/backbuffer.png b/util/test/data/D3D12_Overlay_Test/backbuffer.png deleted file mode 100644 index 69e126168c8daa1bef8d85bd84ca8afc0756f7cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3851 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 CuHo+h diff --git a/util/test/data/D3D12_Simple_Triangle/backbuffer.png b/util/test/data/D3D12_Simple_Triangle/backbuffer.png deleted file mode 100644 index dbc5b8594389f98ae57bf922bffdefec9632f77c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8545 zcmch7c{~(q`*%4=C|YPJOO~2u6p5&8W#6*R7=y8-$yO;@8cWXTL}brY%963pVlYT1 zOCiftYAl0<$Sx`S?!Cu3=XuWadw&1Cf4uJ>^Z9VkeP7r2+OO-rC(81o;Vyo0{%zZ~ z?J_pfv);CCdjj|<@bQ9`sq*34ZQBk*jrGnWZhxLi!%=hmag8<8XBJyxV(uOc=hN5M zN9Z}eJ}>r1@yqEKs@GJm+3$P!w5zmu+)KQz;dHU-rN{N9<(_%$sMEb>S>uD%wqzm^ z3XP7IA@a%Az5f#2=e(&tT{XSnklr8Ml2Y+*^r0E=3AeUXtQM~N7Pz+mj~$!^ZmxeE`Fnwn`!5>*T;MR-_CFUmOtxrn zj{F-&rQrWU^hCHw!5!z*J~>IWN%m%8?3cf4|GBOn zcB5l^fmeoYnPFp@Lt`mb)}EayMEg0&v4pk{ZsbnExL?7zN`Y7TMUTgE-e|+J>{n&k zby6#ECpnr+Kgn z>w19~?px>0SbsCqvqX7`m8OiJm$n0Z$9&EeIX{Fko_dtCOHIA)*-syplI7DrCB=C= z>Z9ExHkzb<5w~*z;ai=ZZ(8n~>d*@=&BZ+RsE|)U#`<3{J)2wngJlPo3O%JLE-lQ> zbuO(YxM90_sRbZP9xkRvH4t=i_of&CS}eOrt%V~_8amRIf<-pC)wVnq60MJV7(3x+ zyzjWDxv72IOR`?WSu5kAe1kUVk%E{R3M&+HQ9aw~djhM2fGjB=`f3HxuVVcjQOYIdt~bym_#bkJ}~h=f~AW%2hqo zWQQS#ufhDu_0aWBk1T#t7Bz8q*vziVeBgEgT$?MUo`4?<*?phJG!cIop>c$u!4^k0 zsW8ROv#6Wvs!j+HJw0iG&H*}D5ey-Ai#Od0Z+3d_8S!E&Dy}#sNXmA4Jb~I*_b=YBLMCxYnamCZX zv{SXK>DGYd=i{AE7+$tg*t`|!!I>v2L&a>8-o<(U)^_~1t2_EOhdlj; z#aYPlC?K;WR#$vpJN`5|As|`ROAq~4g}L%x@fVT9dLm@ZxNVH74`rLBtSjkOK=MG!%p+`1#?ooQ zsyl9gVd(W_r1OIg}d3Zy{oh zl4*ld@^k6@5*ur9oDE1NS9xfmwdX6mTtDd(;iCl_p9jYb(H~&h_w~^FWiECe!vflM z&$s~dlG&68pIHO}J=BT4n2wrwE~JsO%sQ0fVTkUm30K=8%=h}rFyp}ri$KYxJ?)4D za+`-~0kvht={3M8V`OatvXq=qW+Gh$om_eR>&SMX#+Z;Fzt+dd$A!cEhV5mLbPA9f1SYXHqHj#>o1igFcl3=*P(z2>@o&20Huu0>B?BK zA7^}g#>>b36){U_Jd{9bDLtp_H_X)$`9Kdf<*fgl|CpeatyNm6qTd+&7o5& z%IsC!^K1a|-Z_OnGeG?410M}?9POzMigq(sQ-os`4T2HtAv61EBJqIhy(}v6=0x@x z0#YCCT=i5<1emD#>mx%p3wdjTjP}na!pjdw-T-<-8g`F|CQIA|zVO{hd4HPuC?owfek^MFuybgR0};tkN{jxEo20nc>$awk2^ z_0s{&G6g^+(Db~lva_gmB7+a;X9XhqL&SZ~g80JyT+i_6XZYetlmRf9gf6%5 zjk1tFVT~`nXRUG_J5Nd2K-jXX3G)T-ZnuGi@SZ6#`XUSN9z%0{eltC;C|V~O2_Y&t z>sBclp!Lr&R~B+Amw{9fGj+E<+n`PqDUCg#t*pl<=IuQuNHBUib0eLZH8*#@*2*^U zO_7HMws&Q}7B}a>jnOkx_ul*{pghr7K{l#eI#&6@7R=9poG)CLqTiFunvwM@kpTu{!XR|oEq+6~No_=n~xp9v<9DDV1A zejaU*U}P_y$*h})#nbc{0ulOs2=-L`H(fyMbz||4Mjy=E;gdfQ;=Ry!&i?OprCScV zErT@lu|Oe1kE@(sy=kW<2Nc6Nq%A9n$;qXqo@DUPYg-TA*p7Z_nGndQC9JvM6_e zt@W(uHq@}Aqu6YzBsBuzKK)0?ekn;E>7rXV7t0M%k4W$Xc91!J)Q8+qx!b`vsR?V~E@}j)D2H0m07wsta7X%0k+UzZhfUE**2f|5w^$o+c2)u)XUyw9J0jaT!(WQ`2D3%`g?O zYo8a+ctqD8N%--x&D?L4q|s`F7PDd}&MsMU*vllWuH?}!Cm4!F(X5e%ffHVLxImRT z(QRbW%bYOL+aOV;WQBo5zuEPj>mP%u`VYr|P^(9f#$boAA}KcLQwHe8)OV2r!hBbq z1JX{%(hzB$oq{X^b^?|+^AjaAKE||;8ZyTY>!Hal)!yP*3C&0$F=^qh^zYU2Q)aLB z3f#?fK#h}S9dUyDjB554BV|brXiQX7z`}Z8o&HG)PW5BLMU%)!2&}%izJE>;qTg!7l&EnGQoyE$`skr4?lYMH zfFd8#fXtsT(nnp_k-EG9HC-oB%XZ8TaJD@T{kERu>T21M67WG7gU+S- z!r~KDt`dw|5Vmo8h_ukhu5T>QYMi+%bQq}MX{wf&AxhZ*)k}iQQxaslSMSejFlmo9`9f=d6Ak*KFl55`tLcRdjaD{&R9&95MZH6_5^Kcx|;rAVcWgC>eiyz@B zC;2dWF1uzhpSmaK0QY8%hp2DIzaANmF%F%Csr&;-caSuRS!W+LWVYoG3;LJsln|F; z6b3=HuQ75zFv~^BO13iuae2a|VT`2w_~NbJO?$@}x#t$S=42L?d{w(|W| z&E9bfEUCujrJu7_HgNjcnSFIlLUc{2(=mAs1 zb^LtXr-j@l78M0y%Kq5#;C35yT^4W`PI8R6GeXg#Y6?3fBP}q)bGkr9Gm4NOTCqaM zfwc~44A}*_TK=V|j?6Q2TD8cCDfg233&}SZs(KIZw7?##a(Owb72*NJCyjm&&SMcY z1n!Ef`{(c&phzT6sQ~c@yjJA~%ru=x7c|PN-v{ah__!}hj2@JV8ri z^~A@I1Od;v$ib6yKu{!wnRM;V&r(dteZb(@-X_hqF%vO?yU}KtW3MKjY?O?ATD^ha zN%{Hl%J@Bw$+Q_W0F&Dr%QmRDBFAodzu$^q^1(EhDCOh-VLlkb|NT)W(47KKRB*V4 zQ09{&bV^!S9hVvyc#e^D)73J!+VD1T>n`e*y+%P3up|7dz@c>zvA?}5a)C@nHobJo z4@mZ3c_O3=ju~@RybGKB3t2M+;~&=fwJ&nhJ!jGVW@bGPky`9@fTYK`P<$N141-VJ z;o}zOOXZdfa0hsM8A@PBj&%S(V-+glKD?xz>;I_>#U7(4~j;IzOjsOK)3P>DS?Q3 z@HH_o`(x?qb!)I3S7&J#p2=l#!AvkBmoS}^1@C`R z0bqe+;%8q_uDZr>%|K(y>5Q<8r()(Ka_Py%F3`FH1&d^VQI1J(eGTscjklot=YrT< zyHXjgTv_m7edUi()8F#w$-S0B8KJ0i%%CQi)EymZrPRg{wMr$Z?l;GVdvCf*TCi82 zT4YfNILLt86F~bpYV9-DJwDE(D<(d{uLwyG4Oaw1Fa(<5uv$(7eb!$}tBTKbd!=k7 zhx8o!^43@4{7~$CZt!8wvFq5kMCybs`wYjdf?sQW$`A0q+5#v-FkozEp8v*}jiM=t zG=ATT%jW&=^9LuYOQxgs(5;!b;%Bj7R0)t=G+(WKF4!}od_u56Qdr)tt@3-6ydvXi z*^a@-k>t(bN4bpmLeBv}W>LU17Z7p zgHWYBzKI6uv|N>ik>m9Fav^ZID7HClVcnI36>@v6^BX9`pm>eSYT-pD!n(HH(Cg$D z(C!uK^@yO`YG97TUB_w;LY+aQBRsNGttXGhn6dQj3HcJ0Uu!;VH?7-{TcOQ7i_=WF z&gnOkm$$+C!!tF?>HDMT)&db}Bu1nU ze{ic35)t6j2J?L;#Pzj8RO#+*bKMs_)ng|*&J}*=EU-h3d8qv zTY{kmW1^2?qK~S^2w@cj8wO#)g>LOp^eYnIkPAjWM&cw8kL*bqnBhAjK7cr!0T55oC;!#1En`_ZQjAukH?)!GDN2lbc zpx%j^!ke`&V_%H>e#@tt`|A^_?ctd+7D@;(y^iIpq%nim(n6wy`M%rX9s9M~oYX!X z?-|)}K!FCw{VFP@N@&-Yv#13~A@B7(c*z0cdAF)@sA*Km^!lA9FI|~~?){1vr1`i5 zX4bS7Ysg%3YlQu`Js18r9)&Z5?-+Se!T7b8a|LyJ}a*) zU4-f0ByH5XeBXKZ8m@~-x!wVWMc;-1tY|}15fm~_cv;_$^b|DQqE@$e)!5*6eF zFEHcO2lsj!pksOJ-c>g~7R0{}7@DzY@WI?`DJ{pIyjYJM06pl-Gk?3KQR9drgGPES-`*q3UMC;N59Y*4*0y>7Qx zuAb0Iju_r{e%KTS6Bod!BGH;^^8PeKzLX5eLTxqg9`6PK2E?QavM8UnL|J!=EN}%G ziQ`Xb(?9AK&&z$N+;nv~(k|#$RSY#9X;`VZiLK9Yf!Hf4l={96TxvZm+_l^B*8u1? zA{T)Hgzs>~dF{0M{jjLC0^`sIMeX(lceP^%F$E!Ap1Sdx=c z<&1502xy3vcW9}ExLP(>H+I?F>;g`CsHeZiLvCL%qS!Us;(e0VI3fBi_LX~$;^$W;T>VO)K>QvUad3gjV>P3LN#C#e-0bc@^@ zDcT(1QZ8CBSWzyHk}E7eQMXS}S0Lg8loAv^(80$IXbdqI?*Tu0=`SMQvC9zs%K^2J z-Uww)8pZa0{XpPwucW~hTZWAn}C%nJ*k-;ctDT-9pU?SPaN&?m)TFR^Eq*@5MHE* z$}BmuEVC0S%PyIog21a?x}GqD`qY+u0hafN*5WtXJ1RwapOw=tpaKae{X0bNV#Mq8 zlccb_;%Qez3{8%_*s?`e;n~4*dc+CH>0G+gl7DqJXj}_)`XtgBGtF7+ze7P*196gB zjKQWV80({$>QD0DpL9xrN3U&Sz%&;zcYe^ycA`Ft=vMXXC?rBu@EQ1bX9T!9c(8|$ z3vb?BvQZE^$yDRwt!7b1br)?i6&&*_NB@SyaZ_=J|UfBl(Bk|Og8eLkIo<;vnWJ9&O6v!pex%M!0g1Pv|n~j_GmTi?r3tChWBh(QR zXm7JB7PKiTPsfzwf5F^_P-0e(lxg#@Zh@O`a)UOP2J4}FrV(t5FoNQ7F8qhrCH-PG z{=?50^y!eU@)oxT;l&OpWeo+B-*`^eK)vs<2PNZ~w638-IhVF(^$6SP_R?r&^Mkhku(J{(*OE$zlCiS& zdh^K%uU@CsRK%m(kFfn}%l_Eg^cVtq^LpVMK&HHWOhIsC*gIj6omP^=-Sjzu`-I1#J;=94;M9>yK6^ELVBml_KT%sjXji5ZLA zm5A(1S?D74cF`IWqIE~C`ZBH9gGBfP6$KV@$<|hbVUiJQVQB9!R1Yp97zCs_c6|-C zq%13}o}w}B(`JME;DEx-G&w*@kaR^LX%|m)f07gKKWeD=K=?vl}aySRWn?m1(m#@#;70D*t|BM5-{10+-wg2 z_BARXrMyKzH(A79rWD-Ujv&|?Sqi)MNAqr6y{*5OY_K9zoE{pFlGVyI)38u}{|w9k zRSUe;U--C1n*}!LT5Z?U81#2;FF+r3kpOj@Aon{;`Qp{)OE%gGF$9AYs`|{GkpqTa zZ!8m!LcAh!gIdB}?PXq&6vlr}R@Xm1gnv!EJ>bw|gYq9{#nB?nFwK6s^`BMZ>I{F1q&I`|JJbA}fsPTWbSyLNavF>XBeof+hCSnLwggF8y<(Xs0~=Bw>CAJ{w46rc)6-^J;;q*pE-pCVC4wsd7DIg0^-iiiRZ`CT(9HKU`PcBSGa z9E>&|kE5=os#VJ>SCZ08T%IWI*+j5cx)&P|?7}d-q9zx_>`dZHx7Wah^u&~JjGx%nlbJ?_3g488_&oDLuG zISk&eZVkxS_-MCXzn0o~w5V3#F3x;5;H``I^N)Fh5Vo0=GC_57jA@%_Cq53+-*|4& zsof>@=y8%lUH78eopeQQEwa~a4&U_)-yzx4;L%SycIZ^gY|Qy{`;RWR(Bv~bZ+o5J)^SIZO|6nI|%?*`)zr~#;V*TQlL zQNgnd@rZZ9;7WnfWyoq-`j%*L&|H8kZA^(GWTP%``Q3KB4nk6K9Ncc+d$UlA>;uBh zJn5``o-@%jj_;~(jiXUpKYe}hYUT@5Tof}rucOe>^ogg=PyW&~=7fcNx2WJjD|U_S z9?moQ-%ri|%OkiG_(1@;M*jEXJLg6FzZU-AytQxpH?seD;{NYP@c;N456=C6L)n$M armf=_(pI5YZVvcvGuFSTN4ww>{(k^GSxZ6y diff --git a/util/test/data/GL_DX_Interop/backbuffer.png b/util/test/data/GL_DX_Interop/backbuffer.png deleted file mode 100644 index 3603b4f56953cc1347a8fda61f020d689f233498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1430 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKNIvi|3k+<8Q9%5i%jrDYK45_&F_O7>IFr!Gr z!{Xl)+COQiEIOi4dgO-b42x9Nb%$#Wl6mzGwCK(-VG(ZSXmwf{lp!0k*sUpd<=eM= z?@u=oRPH)HYkskO?xx>)>!leC7BmSmC@3&+a4;}2H8d~)5s|zDvR;+)4quN?c-xc{}WIcbJu0%)mI)k1vst zNEacw-65~Sza%eo?QBM#MPVBoiSyRY$4~D_cE3(Ka&VF51iqtrM~_!bwLi5D7W^O=Fe6c(&AlGYt+`v2f_ljNT-Pww!ru)K&q{a>f(fT9jY z$Tw^(-fHFJuv7Ts8=dO<_03B=vhPp3<-h=moJ$8S1w1B3J$*mFx^7nA`rP`T*Zb4+ zl&(qt+sne@vDN81kH^d6%Nz_F8Xb<+#&l)$zr4LqMak@SS|2YohG#^bYdkO|D%N0{cKS6$jHET2{vUi`7)Z`$ut`~79Fk6!z8?)KbeD-CtpHz21Xh|7D9Zd?=^8TGXDCWd5}j!AE+4UTD?+bA@;Qb0to@Fc}JeDv{XSFhW9^kr5Kb9;V@mj$I+I(;C2@ z1qvp(%wcZi%n-km*w?_Y-J=I6)VA?umR8XLOO!PK<6vln!Ggy-?=b@-6=$kF@P5w} z&Yhv}Ty$b)I?qy#H5L%?Sa`GSJtNO?ED;H^-fG9h2|hb&64(?J3|bDir!hQ!CLjjM zun=2d+1Eh!j>n0Lc^T${S9e*0oo~p5ku)H_M9QKGvnnjh^S18KVQXkGXz@#8J8)O# z5ECT4u_Si5ek8dW2JbyA9Q*ap03!k9b0p8>;~`~Pc;VyYp!uG8#o7uX1|l;bHuu0v fA7bT{_A$>~mb16)-mb~O@|MBV)z4*}Q$iB}A7YBi diff --git a/util/test/data/GL_Overlay_Test/backbuffer.png b/util/test/data/GL_Overlay_Test/backbuffer.png deleted file mode 100644 index 69e126168c8daa1bef8d85bd84ca8afc0756f7cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3851 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 diff --git a/util/test/data/GL_Simple_Triangle/backbuffer.png b/util/test/data/GL_Simple_Triangle/backbuffer.png deleted file mode 100644 index dbc5b8594389f98ae57bf922bffdefec9632f77c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8545 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 armf=_(pI5YZVvcvGuFSTN4ww>{(k^GSxZ6y diff --git a/util/test/data/GL_VAO_0/backbuffer.png b/util/test/data/GL_VAO_0/backbuffer.png deleted file mode 100644 index 8fe4a7987cda0d52b9fac0870226a27a9575c8a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4872 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 diff --git a/util/test/data/VK_Indirect/backbuffer.png b/util/test/data/VK_Indirect/backbuffer.png deleted file mode 100644 index bf9e07dfd2a9ee9ea535adf4f6f5f90a56e157b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7204 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 diff --git a/util/test/data/VK_Int8_IBuffer/backbuffer.png b/util/test/data/VK_Int8_IBuffer/backbuffer.png deleted file mode 100644 index fa04502c4c25ef8fb27d6c528fdbf1c646120a12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9693 zcmdUVXIPV4*Cs~}#6t-dnh-z%X@Vd~@1jVRUP4EDjet}W5D*a&2`DABfCxwzY0`p7 z#~?)k={*o4A=FR==LzS$?|kp|&5yaRnfWn4;7YRhUe8`-ueI)bKXHcl?lRJG&{0uQ zF=}hwHm0Kb0}1?zo}~qTS+8IIOht9|t@dqo(~ybvY-|6;o}fEqZNrkayES|hXxsI+ z{ca5s1olJfHdRF5NpFSKX=%ZL9M`Hw088u{;wDI=#+{x#+Qj@W-o z`46#KKg5nz_cwkY!orsITSM?g#)oaX;=1@z-TINu!q>jdHS{l=)+|j|?m!W?*=z{` zY&o%aBjlcrc_t#34o@D`%r%GBAObN=cJ*mLH}O--=9Q1iDtHoSqZjMf_Rak5uO9I> zL}={=_fG2$M>n@5kBN)yzG@CPEKb{MG%KE53*oEeOqrnR&emBsEqV7fel5(1@|a)+ zaf6kLu!K@udY+@6-DCXJy_NOF`33~3u_cS!YbAC}*?cUqd!udBI`EgsHw$@05}wEZ zut|^XKOBum+lLH6{=OFQyZrZl^Y zawWGDiMrybC!lzPoUoyt5#zj1Ll@9wvO;Yt`2I4-I^QB@INuC4Nsh}fOo zN!l=4Skd098WY|R)i3T_nGz=yP5jMcSE5`0A4}@xWJ_+4pw{f=Yxpc%sBHCOUi|%IJBinbdhK(i35YgjZ?c}+`szxMO`TOFw_JOD`cUi^#%er&1A5K{J z-%Xlal`MoV2x1cll=-a&YAw_9LSM8LwdZ@-|BkEYiPrg(<`K&jsIuPpFr@4@yo0|_ zv-FyyfNgo%H*!gSzqF|eA+%3&xmt_9RM-t(fFH17}+GKJS<5>en3w`EKh zUSf#V_??ZJ-+)a2(x4eOB;oFfa9=3D#;nA}L%l6$&KoSCY}te;=o)GYqc1h%2|@*q zuc}LrstbH^o2G_`i0P^jB-p&l+NfwHV!fF>yZQrKO(js&e!9p0Q@Dx=6TzNG zyU*>?*0{;;uw;T(B#6DoW-4{FuVajyk`%^neF*j(r#j#;vj$vl$<#Zg!@%Ct z$=Fe^xZf|b|z2-<5c_;HzPuJzI=%;-lDvm$r0!SGJjLf z9*)1;=Y}UpAC%pdEaha1UuEy%J&C>)@npB520zgAIc#h&O%Z<3TpzHq8!(MWejBg1 zqA&e^nWq2k!T?ssnVK&3(j+2LvHImm54vCHb_r~~-_iy~9NfA-)AgJ2i@Nf9*#XlWy$ZD(0}nrj_UOC_(Ioc`9){9q@S0--@Ud} zt6j;vUP`*RyZBo=sJjuSnfZ{tbYtSH7d}ZTuu{udg^-k}B+B6Y2Q%i;YIV_t;LRp^ z#&r!6+eOmII6Bsil1M)%y41TGhHypL%A2rSDZ-D52~WxzT`$K3A2$T@6_cJby(3O0 zgkMW&RYj|=N-kuqZs}038Bnira&&R-4{B6(jG5+aU2kZ>8X-}nra&S<@pwl{*b-i* z`7%K$B)M|&BryYJi9jr|2j8N|mb&z8gXc_H0O^GVZ?MSD;Je$S9Ii8}jF3DBKf!U$ zg}E;|N&$qA4TFG@t)EAOfRoOm^;66jbulLd((J2Q{&wzH6oLfd|mR=YN zTA=Lyo0^_yxP;eemb}cYFE`Jbi+GOY3VH0*J-*o(=9<_~x6R+pRrUP!D_eQ)=P@!48={+{&+Dr;?v%X{#TJHl%d5)r%y$UMnSFkfet4?lx*# z$pCsUhTqLsS_oy#P3UUv>Fhcmg zBdaUwHl9cXplcE27j%s&oo&|pp!A-8I+%=UcQ)So1!X}TZSpto-t0&9i*wVSpRps2 zOiQ2XGPHf~_>okS6&@X?IIWkEq*1bT74j4d$@{t34NcWADFV8L<=Va_(>(ND0rM)OpFe;;Bh4?mc9V&S$-Kjb3fwoXqC)` zQY{&75EFaP1uIL9*oLW>;c1~|SHUw1_M3Wic8?&8F%{fg00$t!25| zK$@E-B(@!)mTbm@wtf(J5&R(XaCdaf{B)8b&G6XmswY==81pyfLV{ELNHXrZnA|9$ z&f;A4qZ7xb(nVK|QxDdk!Dlk@j5B$EU#h9jAjjEgq&EZ-KWC`7jUsq0avh4`{hbd- z0;>0_G8y>_u&$IvPzRd()W5Tey4zIEc%3q?4sf~pHZ*zV=&F-%yt`eY)`mH{Ecy*8 z%Sln|j0kcn&wI7m4cM}+KBPI&CfiKC>5bg}Tez|x4neq*nLu#^Ep-)k-n+*p%nH&h zrh=W~uou%*Z&FoCt#B~Lq(|P=kCqGhq{eC%`C{JRk5soR5fEG#ydASJ=QHm|(mwFt z#>zrK1NRkZB?UXf;R+`Ezm^x~rh9KUK7A|Sjzt8@_S|QA$P^hTYN%d07cdtc&)U&; zciF2f!dn{5P2HweQ5+*3^vuhgO@l)&RxZTaIsJgdI?6yd;nvH_0h&z~ml~MLKqshE zd>ZfW=<-Ax?Q(IR1kAKa4-GqyP(Pi?4pOzke7Dj{Q-@upM9YdK5-|e_U3(CcBN6cJ zs0*naoZhhOy=D743de7434wcVezd^g?k@UDoE|^3%MA%>#r>(9fQso70i1q>`7$6F z>vH8nRNsq#t2OZ=_>mq*Vxf@?Ej(fFWAn|9xI)zQ=t7bGSZ;sudRZ#`lIH!Sj~8hQ zk)AH)r^%o}Xb+!go+D|qtfVT2o!YUI@k(#Vp809|Z_I+lM;V;Mq}i?J z+R@iszGSlTkX_2#P6N{XWjd(QnP%lhG&$KuGsYd0I{M>aN6C*gz~-7W`?>J~&2)F}g-}`=udM_L7Q&G8?y0S8B3~=O-hTb% zN4ht_;!4bnEAuiOoYo#FnA65oMIH(t)Lo#&DOOBW^??wFqJ^C`q?zaDGrOdy0Txii z;SgZU2J&-nA!1BdZb^x!6Qq&fA4!u39ya)qhKn3x&1aFa{MaeC z-9n4p+$KW^To;qoF=I;a<#npZGi6Qci<*oP#g1NmhA2gBXGM&Ff1KR@)=i|hTAOZX z+t`wB2MX;IUun*Kst}77u?t(({%!E7{;Z*F;dnr?T*#Nc=T>o1Y0siJQYv9p>HloQ z^oe!Jjey=Oo50Z;MkjEBO*HI(OO}t}m>;?U9>mNvde&CKW8oL;_hrOwyeLkr=IC)c z8t~Ig-wEt&(}gX4z2HiG16ySjTK&olib$?}$G_cnz<#eDQBfbCFq%hrw(m5uo6g|1r?tVk4G~>l3DE|Xk>0o4g#Acj2f$WUFrT=srSLbC zrMoBvq$m;&Yqf~Q=IMLIMb{fS;)pxqJ~rx{mq4)de59)99rcV?h5wE#pd|19;NE+R z%^Rpy-?dttBZ!qHT$2+3&&Ve5nJ3*Q+HAa#p0%Rvncl;3`R4tMh&q$sFVfgRFcD7j zbFFE0?mMtdM<=?8ZqLV9)Av`=2K68At*Ff4h97&rwaD>$M#*>TVr4fH(szN96qFu1 z?&+8}cSZ4;2B5sF`M-j0ZY!?(EVoA*cALH46omO^rJ;F-GGhGUXG}rGfeoR4Zg? zIPOO(r{n)9{?LKrD1&}RUh*gc@O5sc|XG<0> zdJ!o<rlPGu8&||;9I(w(ClmK$p#4)sWmBnqaa>F zxI=l&G`?9WyJ=0jB1jDWlW&Y%6rh-0pBTHc*GAa$4=c;&u_IgBs&co2x?v-mrF!P(_gfi3M0aocelk0!hiJ=mYE9dns>tdtk-a(guPJ$uJAjti{NVE8EoQN zzdf-I?tT-Zz}jTowD5rV+!%N^a{--29~U~n<-v}BMYtFof`QF85~u9G>WptT``uIw zZ%G?h2`6$ddyB7dyX^gt3r`CGI5k;$vYD&>(i9u&xDtC@f3nzm^2&&n8kHEaIc$9_ z!o#eK3477T^pVInP=J}0#R!_sK=Tgisn|N3q(pInhaFpd)&@*dB1_P{<1Ph_$1hm<-7#CieA-}*w*>r z!>Wv-(OJH#Sl$&xd-?!GAOO8VV6l6t+k0RWTo zK+YC0g$eVdYY`z6WTlm>EEjR(P7jhCuehD9`D1&HI#KZ2&=)4Nt5H$obSkOI4I1dp zX!;koc1!pJ84~i%LQMzQZfM|3bo}4%j0tK-5xUoIDeM>~4hSw+e++%!_&icHlBe&` zdM@7=$Q9|XacBuu6*AIYdF;OJQ{0Wc9B^VG;#hDdoI&I~^G~w}Jk2vY_{FLVo9AB% zah6v+K|QSfaBsHsrOcS&LD`D%m)8TlVr7LkBex6oq=AaH^*J_re%`N$Q~BMhck@GO zheD(j1biHP__Q_P;WiVCmPT8qVsVI8O@$%pA)EobXc;$!+HqLlOX0Y?u_jh#j`-m+ z>XHu{u>_$+(Sb~)`C8F~vUZ!YDq3px9tf?m3L|1(BBU~#$mhk2&`9SYVYc~VWmFya zy)bS^95;?_f88>o2_}!oh%xJlSpJF2%a7A)tZ(OY<(5|FTQ6~SS#TrQrsUt)F#Q=~{FgbEB6juSUj=;<1j#L#Iq-+lMXPjRN6Sj+L;p zI}@cQZ3}iH#IO=%!nKb~6cvOdlA7}4p2XvlSk1k-I_j;V{o9{AYu_C|%lEK63f>D6 zIEY%4w*G&|GL0IgJX{}Kv$CPUJ>NcJ-n<+`cP_xxGiVRH=`r_Bw_hzL*}s5-gs@wG zU66}N4dUTvE^8ef|F#f{Rl0TYU~Yi`3DNq)upC!HFWcJX7a15rea0D4!;HE_}KJQp>zBSK;^@x4l#%<(0t9--17nV3S}qovYi_bS2=O_HSEsYWPVUmdMG@x zi!DCdV}qXaOfJur_aJNDY7R}(FSY1|PH6w?w&s_kBP;c9g;3;p*Kc5PJikCga%Bt4OnEbaQ zO$yN5V7im79E^({h& z3(&+Tj`UQWr!m+Hoce7fb+NQE5wdviv^N!?-aOWL90<bbjAA&i|;=wASkcFU4EH^^Qp-jd~w(l>WA z-idpsyXSbO-OuFOpCQ$ao9tiwo3ECRMNN7vH6f$+&ZYOzu_&2eI{G9k8kA#cli1nj zrE%I7`&^c1Jo_cf4Ip;((Y)(r(oay<#z|7b?&z!a!*cuP%R}BSfzxakRO)w6VUVw5 z!j(X>h7x$D{5p0@K%WLAG2JX5@ZeiPXoc>1N9+x$69YDq`8DQL1ad*=m z18AMCTQ7Sx^f~-u-c(GGf!G@}@qB?aJ=5)u9 zMdK56jD?PnS}q&T(^vrFXY0g9us;Ie$B1hH+u@e7$w1f00yyF))1bnr=6#mlu2Wv< z7QNT1MB3!ghGb$bFuHOrN4w1{F`8U4X=yx?8B;m=fMRl8Pe=XiZ!h8j!iv*XMU~q7%jk{Q;;M$NGlzeZob)AXhZ#bt5>GIWH@QI@6_Vf?TE_2erh~Q~5O~mls&{bU zl(!Z|+_w2;#P&SjQDj0!R*?C&N|M)Esrs+BmQq4L8V#1{n18;mY)G#N^Bq+Qs&;() zdR&jPh`vnCdk($5Be!3qo{IzB3kOy;#~Q1uPj%-$ni`@Re8 z*S~gOi+bf82o}#E#WMpiZ2;*xers{gddmfevfi$~ae4;NiygC`3$(g0~Z01Gt2&A1uRvcqmPL<9?Wv4 zkB>GG<0kiw{c@jTq#)rBHFW&-o07HTk}80TzzRNJk}|st06C*a5nVDc z05_vCGRIdkl>r*K>3xMBMfN#R#8k{kvUt0e=!M`npO}ry%cM_%9b2c$@lc=1)6%S! zq8L=B-4|Czsrql3$8;<=UwQvQVfGG7-T)l%b{lYc^1>2Tp8{XY20K0N2T*iy!{oiR zvbiijl3ntbcMnAUrQS9?f&Wb~7qj#<;J)>Tl3W(%(5l!erW~5 zqjG8K+bgxF+yGy(PqW5M4v<%QU?6%^QpUm@fM<0midhVP=1@fE2!c-zK4Z77EiK;U z9D zj7!g1;HOx7{@yj^X|~~H@s)tF`cu;C1+Ao{oZojHhmQFn+w*8xZ`!LLnVyb5ViY|tRdu^N ze111CF72&t9m9~8nd z@gC2))^+pIbrui|3N^ZBM7rQdYT4QqW4-v#Hl9Dwm3F-@&u@1f*h#ftyQAkS!M<>J zA}fmc!jCjFW^GX}le&R~EwIkwVgNb^sEg**q29mcU;gz9Qy~|EPnd#!#@g;Mw){ae zjRLH;#ggKzBFDq`H=zK19J#|7i9k06Bm77Tx)3<@sF>4)1o0z9FUS9~&O9x&n%=X@ z*yW$%o-@-AzRruR9C!eHmsf+fBW_*jRf6!UKv&zN-=?Ab%iDa*)}fRD0Iq+OixqqS zxJe!eDfc7crI86ja#z8atLP2nKsVbDCoh3)%@19te9cYd#yWWoDPQ9u2Jr17*s1K3 zf`n`Ce2a5p_y1HePuj1`(KN-(t@z0NlMP^-+V=Lcs^sgjgv4lrfxP%{u%}V$ zI!ktICWFjSHKyh5I4&!U2IjQNOS;i)l}E(+_PM<+R|aF`^z)1!m_mN}oo|5#@-LTS zd)VBPH!@C>w-!w@$C-dVwsK0I5gz`!l^is5=OJ@heYJ}2=y?!N%785ENc4DcCH!xL ze5G5`g)!Us`$!d?ug1ykcUQ2|(1|F5F=ml}l4EK{H4c~lCmGeK`tIfh0j}vt%(C3R z?N+{>(fc4}phr6XMisHPdGrLX(sEK&ds_d?)lLjr0#?5xe~i7>{yS7d zjNV(Q$9J@$tt?c+?SYn(^YpH1lx`{F^++e$ztraI7P=EN#+{<&!SW_VT znn8Y5or%kc<^B6QHQ_YfltxZ5@*Mh43|YrT|E{e|V50#Ey8|!LJZgtz6b{v@NSb4S zo2vGbD#~j}dKZD0kM{rM`3s<$sQ;j%V)&DaO5z+9)h9LJhkt+guOt6Cv4hp7JnNBksV diff --git a/util/test/data/VK_Overlay_Test/backbuffer.png b/util/test/data/VK_Overlay_Test/backbuffer.png deleted file mode 100644 index 69e126168c8daa1bef8d85bd84ca8afc0756f7cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3851 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 CuHo+h diff --git a/util/test/data/VK_Secondary_CmdBuf/backbuffer.png b/util/test/data/VK_Secondary_CmdBuf/backbuffer.png deleted file mode 100644 index b1d23a93428b1671fc3326fa6a7bbffdad546355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9362 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 diff --git a/util/test/data/VK_Simple_Triangle/backbuffer.png b/util/test/data/VK_Simple_Triangle/backbuffer.png deleted file mode 100644 index dbc5b8594389f98ae57bf922bffdefec9632f77c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8545 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 armf=_(pI5YZVvcvGuFSTN4ww>{(k^GSxZ6y diff --git a/util/test/demos/d3d11/d3d11_1_many_uavs.cpp b/util/test/demos/d3d11/d3d11_1_many_uavs.cpp index 28002416f..7f50051fa 100644 --- a/util/test/demos/d3d11/d3d11_1_many_uavs.cpp +++ b/util/test/demos/d3d11/d3d11_1_many_uavs.cpp @@ -56,7 +56,7 @@ void main() while(Running()) { - Vec4f col(0.4f, 0.5f, 0.6f, 1.0f); + Vec4f col(0.2f, 0.2f, 0.2f, 1.0f); ClearRenderTargetView(bbRTV, col); ctx->ClearUnorderedAccessViewUint(uav, (uint32_t *)&col.x); diff --git a/util/test/demos/d3d11/d3d11_array_interpolator.cpp b/util/test/demos/d3d11/d3d11_array_interpolator.cpp index 959dede7b..7c0393b65 100644 --- a/util/test/demos/d3d11/d3d11_array_interpolator.cpp +++ b/util/test/demos/d3d11/d3d11_array_interpolator.cpp @@ -93,7 +93,7 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_byte_address_buffers.cpp b/util/test/demos/d3d11/d3d11_byte_address_buffers.cpp index b70fbd473..a1bd2729a 100644 --- a/util/test/demos/d3d11/d3d11_byte_address_buffers.cpp +++ b/util/test/demos/d3d11/d3d11_byte_address_buffers.cpp @@ -65,7 +65,7 @@ void main() while(Running()) { - Vec4f col(0.4f, 0.5f, 0.6f, 1.0f); + Vec4f col(0.2f, 0.2f, 0.2f, 1.0f); ClearRenderTargetView(bbRTV, col); ctx->ClearUnorderedAccessViewUint(uav, (uint32_t *)&col.x); diff --git a/util/test/demos/d3d11/d3d11_cbuffer_zoo.cpp b/util/test/demos/d3d11/d3d11_cbuffer_zoo.cpp index 9de2db337..50a3154bc 100644 --- a/util/test/demos/d3d11/d3d11_cbuffer_zoo.cpp +++ b/util/test/demos/d3d11/d3d11_cbuffer_zoo.cpp @@ -291,7 +291,7 @@ float4 main() : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_counter_query_pred.cpp b/util/test/demos/d3d11/d3d11_counter_query_pred.cpp index 4a0df944e..ea4c2b245 100644 --- a/util/test/demos/d3d11/d3d11_counter_query_pred.cpp +++ b/util/test/demos/d3d11/d3d11_counter_query_pred.cpp @@ -184,7 +184,7 @@ RD_TEST(D3D11_Counter_Query_Pred, D3D11GraphicsTest) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_deferred_map.cpp b/util/test/demos/d3d11/d3d11_deferred_map.cpp index ca7dbc965..47cf39857 100644 --- a/util/test/demos/d3d11/d3d11_deferred_map.cpp +++ b/util/test/demos/d3d11/d3d11_deferred_map.cpp @@ -87,7 +87,7 @@ float4 main(v2f IN) : SV_Target0 Vec4f *data = NULL; while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_deferred_updatesubresource.cpp b/util/test/demos/d3d11/d3d11_deferred_updatesubresource.cpp index 45439c008..b6df2ce93 100644 --- a/util/test/demos/d3d11/d3d11_deferred_updatesubresource.cpp +++ b/util/test/demos/d3d11/d3d11_deferred_updatesubresource.cpp @@ -163,7 +163,7 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_divergent_shader.cpp b/util/test/demos/d3d11/d3d11_divergent_shader.cpp index 9efe5536b..58cbf42be 100644 --- a/util/test/demos/d3d11/d3d11_divergent_shader.cpp +++ b/util/test/demos/d3d11/d3d11_divergent_shader.cpp @@ -143,7 +143,7 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_draw_zoo.cpp b/util/test/demos/d3d11/d3d11_draw_zoo.cpp index 6aab26c91..2ce53c641 100644 --- a/util/test/demos/d3d11/d3d11_draw_zoo.cpp +++ b/util/test/demos/d3d11/d3d11_draw_zoo.cpp @@ -233,7 +233,7 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_empty_compute_dispatch.cpp b/util/test/demos/d3d11/d3d11_empty_compute_dispatch.cpp index 8abff1174..90a0101fb 100644 --- a/util/test/demos/d3d11/d3d11_empty_compute_dispatch.cpp +++ b/util/test/demos/d3d11/d3d11_empty_compute_dispatch.cpp @@ -55,7 +55,7 @@ void main() while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); ctx->CSSetShader(cs, NULL, 0); diff --git a/util/test/demos/d3d11/d3d11_empty_drawcall.cpp b/util/test/demos/d3d11/d3d11_empty_drawcall.cpp index 1f83b5441..a6f29a40d 100644 --- a/util/test/demos/d3d11/d3d11_empty_drawcall.cpp +++ b/util/test/demos/d3d11/d3d11_empty_drawcall.cpp @@ -46,7 +46,7 @@ RD_TEST(D3D11_Empty_Drawcall, D3D11GraphicsTest) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_empty_viewports.cpp b/util/test/demos/d3d11/d3d11_empty_viewports.cpp index 3601c86c6..8ae27e070 100644 --- a/util/test/demos/d3d11/d3d11_empty_viewports.cpp +++ b/util/test/demos/d3d11/d3d11_empty_viewports.cpp @@ -47,7 +47,7 @@ RD_TEST(D3D11_Empty_Viewports, D3D11GraphicsTest) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_many_rtvs.cpp b/util/test/demos/d3d11/d3d11_many_rtvs.cpp index 86e4390e6..121346983 100644 --- a/util/test/demos/d3d11/d3d11_many_rtvs.cpp +++ b/util/test/demos/d3d11/d3d11_many_rtvs.cpp @@ -73,7 +73,7 @@ float4 main() : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); diff --git a/util/test/demos/d3d11/d3d11_map_overrun.cpp b/util/test/demos/d3d11/d3d11_map_overrun.cpp index 7ec8e72eb..9facc4945 100644 --- a/util/test/demos/d3d11/d3d11_map_overrun.cpp +++ b/util/test/demos/d3d11/d3d11_map_overrun.cpp @@ -95,7 +95,7 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_mesh_zoo.cpp b/util/test/demos/d3d11/d3d11_mesh_zoo.cpp index 72d112af6..839bb3e2d 100644 --- a/util/test/demos/d3d11/d3d11_mesh_zoo.cpp +++ b/util/test/demos/d3d11/d3d11_mesh_zoo.cpp @@ -142,7 +142,7 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); ctx->ClearDepthStencilView(bbDSV, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0); diff --git a/util/test/demos/d3d11/d3d11_midframe_create.cpp b/util/test/demos/d3d11/d3d11_midframe_create.cpp index 1a03e74e6..05e715561 100644 --- a/util/test/demos/d3d11/d3d11_midframe_create.cpp +++ b/util/test/demos/d3d11/d3d11_midframe_create.cpp @@ -115,7 +115,7 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_mip_gen_rt.cpp b/util/test/demos/d3d11/d3d11_mip_gen_rt.cpp index 7ffd0fbf6..b7337329d 100644 --- a/util/test/demos/d3d11/d3d11_mip_gen_rt.cpp +++ b/util/test/demos/d3d11/d3d11_mip_gen_rt.cpp @@ -115,9 +115,9 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); for(int i = 0; i < NumMips; i++) - ClearRenderTargetView(rtv[i], {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(rtv[i], {0.2f, 0.2f, 0.2f, 1.0f}); ctx->UpdateSubresource(rt, 0, NULL, ramp, 1024 * sizeof(uint32_t), 1024 * 1024 * sizeof(uint32_t)); diff --git a/util/test/demos/d3d11/d3d11_mip_rtv.cpp b/util/test/demos/d3d11/d3d11_mip_rtv.cpp index 17173f920..bd2187478 100644 --- a/util/test/demos/d3d11/d3d11_mip_rtv.cpp +++ b/util/test/demos/d3d11/d3d11_mip_rtv.cpp @@ -71,9 +71,9 @@ float4 main() : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); for(int i = 0; i < 4; i++) - ClearRenderTargetView(rtv[i], {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(rtv[i], {0.2f, 0.2f, 0.2f, 1.0f}); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); diff --git a/util/test/demos/d3d11/d3d11_overdraw_stress.cpp b/util/test/demos/d3d11/d3d11_overdraw_stress.cpp index b7c5ed1f3..0f1119900 100644 --- a/util/test/demos/d3d11/d3d11_overdraw_stress.cpp +++ b/util/test/demos/d3d11/d3d11_overdraw_stress.cpp @@ -95,7 +95,7 @@ RD_TEST(D3D11_Overdraw_Stress, D3D11GraphicsTest) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); ctx->ClearDepthStencilView(bbDSV, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0); diff --git a/util/test/demos/d3d11/d3d11_overlay_test.cpp b/util/test/demos/d3d11/d3d11_overlay_test.cpp index b48560936..1c1f06e1b 100644 --- a/util/test/demos/d3d11/d3d11_overlay_test.cpp +++ b/util/test/demos/d3d11/d3d11_overlay_test.cpp @@ -131,7 +131,7 @@ RD_TEST(D3D11_Overlay_Test, D3D11GraphicsTest) ctx->OMSetRenderTargets(1, &bbRTV.GetInterfacePtr(), dsv); - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); ctx->ClearDepthStencilView(dsv, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0); // draw the setup triangles diff --git a/util/test/demos/d3d11/d3d11_primitive_restart.cpp b/util/test/demos/d3d11/d3d11_primitive_restart.cpp index 60d712a81..f3b6eae51 100644 --- a/util/test/demos/d3d11/d3d11_primitive_restart.cpp +++ b/util/test/demos/d3d11/d3d11_primitive_restart.cpp @@ -44,23 +44,23 @@ RD_TEST(D3D11_Primitive_Restart, D3D11GraphicsTest) ID3D11PixelShaderPtr ps = CreatePS(psblob); DefaultA2V strip[] = { - {Vec3f(-0.8f, 0.2f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.8f, 0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, {Vec3f(-0.8f, 0.7f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.4f, 0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.4f, 0.7f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.4f, 0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.4f, 0.7f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, {Vec3f(0.0f, 0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.0f, 0.7f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.4f, 0.2f, 0.0f), Vec4f(1.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.4f, 0.7f, 0.0f), Vec4f(1.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.0f, 0.7f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.4f, 0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.4f, 0.7f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.8f, -0.7f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.8f, -0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.8f, -0.7f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.8f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, {Vec3f(-0.4f, -0.7f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.4f, -0.2f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.0f, -0.7f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.4f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.0f, -0.7f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, {Vec3f(0.0f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.4f, -0.7f, 0.0f), Vec4f(1.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.4f, -0.2f, 0.0f), Vec4f(1.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.4f, -0.7f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.4f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, }; ID3D11BufferPtr vb = MakeBuffer().Vertex().Data(strip); @@ -93,7 +93,7 @@ RD_TEST(D3D11_Primitive_Restart, D3D11GraphicsTest) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetIndexBuffer(ib, DXGI_FORMAT_R16_UINT, 0); @@ -109,7 +109,7 @@ RD_TEST(D3D11_Primitive_Restart, D3D11GraphicsTest) ctx->DrawIndexed(17, 0, 0); - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); ctx->IASetIndexBuffer(ib2, DXGI_FORMAT_R16_UINT, 0); diff --git a/util/test/demos/d3d11/d3d11_refcount_check.cpp b/util/test/demos/d3d11/d3d11_refcount_check.cpp index 36caf0fa5..1401f1ea7 100644 --- a/util/test/demos/d3d11/d3d11_refcount_check.cpp +++ b/util/test/demos/d3d11/d3d11_refcount_check.cpp @@ -53,7 +53,7 @@ RD_TEST(D3D11_Refcount_Check, D3D11GraphicsTest) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_resource_lifetimes.cpp b/util/test/demos/d3d11/d3d11_resource_lifetimes.cpp index 19cdb152e..173339f83 100644 --- a/util/test/demos/d3d11/d3d11_resource_lifetimes.cpp +++ b/util/test/demos/d3d11/d3d11_resource_lifetimes.cpp @@ -42,7 +42,8 @@ struct v2f Texture2D smiley : register(t0); Texture2D checker : register(t1); -SamplerState samp : register(s0); +SamplerState smileysamp : register(s0); +SamplerState checkersamp : register(s1); cbuffer consts : register(b0) { @@ -54,7 +55,9 @@ float4 main(v2f IN) : SV_Target0 if(flags.x != 1.0f || flags.y != 2.0f || flags.z != 4.0f || flags.w != 8.0f) return float4(1.0f, 0.0f, 1.0f, 1.0f); - return smiley.Sample(samp, IN.uv * 2.0f) * checker.Sample(samp, IN.uv * 5.0f); + float4 col = smiley.Sample(smileysamp, IN.uv * 2.0f) * checker.Sample(checkersamp, IN.uv * 5.0f); + col.w = 1.0f; + return col; } )EOSHADER"; @@ -84,7 +87,13 @@ float4 main(v2f IN) : SV_Target0 ctx->UpdateSubresource(smiley, 0, NULL, rgba8.data.data(), rgba8.width * sizeof(uint32_t), 0); - ID3D11SamplerStatePtr samp = MakeSampler().Address(D3D11_TEXTURE_ADDRESS_WRAP); + ID3D11SamplerStatePtr smileysamp = MakeSampler() + .AddressU(D3D11_TEXTURE_ADDRESS_CLAMP) + .AddressV(D3D11_TEXTURE_ADDRESS_WRAP) + .AddressW(D3D11_TEXTURE_ADDRESS_WRAP) + .Filter(D3D11_FILTER_MIN_MAG_MIP_POINT); + ID3D11SamplerStatePtr checkersamp = + MakeSampler().Address(D3D11_TEXTURE_ADDRESS_WRAP).Filter(D3D11_FILTER_MIN_MAG_MIP_POINT); auto SetupBuf = [this]() { const Vec4f flags = {1.0f, 2.0f, 4.0f, 8.0f}; @@ -155,16 +164,20 @@ float4 main(v2f IN) : SV_Target0 srv = NULL; }; - ID3D11ShaderResourceView *srvs[2] = {smileysrv}; + ID3D11Texture2DPtr clearTex = MakeTexture(DXGI_FORMAT_R8G8B8A8_UNORM, 128, 128).RTV(); + ID3D11RenderTargetViewPtr clearRTV = MakeRTV(clearTex); - ctx->PSSetSamplers(0, 1, &samp.GetInterfacePtr()); + ID3D11ShaderResourceView *srvs[2] = {smileysrv}; + ID3D11SamplerState *samps[2] = {smileysamp, checkersamp}; + + ctx->PSSetSamplers(0, 2, samps); ID3D11BufferPtr cb = SetupBuf(); ID3D11ShaderResourceViewPtr srv = SetupSRV(); srvs[1] = srv; while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); @@ -174,6 +187,12 @@ float4 main(v2f IN) : SV_Target0 ctx->PSSetShader(ps, NULL, 0); ctx->OMSetRenderTargets(1, &bbRTV.GetInterfacePtr(), NULL); + // lazy partial clears! + ClearRenderTargetView(clearRTV, {0.0f, 1.0f, 0.0f, 1.0f}); + ctx->CopySubresourceRegion(bbTex, 0, 0, 0, 0, clearTex, 0, NULL); + ClearRenderTargetView(clearRTV, {0.0f, 0.0f, 1.0f, 1.0f}); + ctx->CopySubresourceRegion(bbTex, 0, 128, 0, 0, clearTex, 0, NULL); + // render with last frame's resources RSSetViewport({0.0f, 0.0f, 128.0f, 128.0f, 0.0f, 1.0f}); ctx->Draw(3, 0); diff --git a/util/test/demos/d3d11/d3d11_saturate.cpp b/util/test/demos/d3d11/d3d11_saturate.cpp index 01e00564c..579b812dc 100644 --- a/util/test/demos/d3d11/d3d11_saturate.cpp +++ b/util/test/demos/d3d11/d3d11_saturate.cpp @@ -79,9 +79,9 @@ void main(float4 pos : SV_Position, out float4 a : SV_Target0, out float4 b : SV while(Running()) { - ClearRenderTargetView(fltRT[0], {0.4f, 0.5f, 0.6f, 1.0f}); - ClearRenderTargetView(fltRT[1], {0.4f, 0.5f, 0.6f, 1.0f}); - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(fltRT[0], {0.2f, 0.2f, 0.2f, 1.0f}); + ClearRenderTargetView(fltRT[1], {0.2f, 0.2f, 0.2f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_shader_debug_zoo.cpp b/util/test/demos/d3d11/d3d11_shader_debug_zoo.cpp index 29f11cf6c..91834f87a 100644 --- a/util/test/demos/d3d11/d3d11_shader_debug_zoo.cpp +++ b/util/test/demos/d3d11/d3d11_shader_debug_zoo.cpp @@ -657,8 +657,8 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(fltRT, {0.4f, 0.5f, 0.6f, 1.0f}); - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(fltRT, {0.2f, 0.2f, 0.2f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(ConstsA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_shader_editing.cpp b/util/test/demos/d3d11/d3d11_shader_editing.cpp index cecbb66ed..ba837ff7e 100644 --- a/util/test/demos/d3d11/d3d11_shader_editing.cpp +++ b/util/test/demos/d3d11/d3d11_shader_editing.cpp @@ -78,8 +78,8 @@ float4 main() : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); - ClearRenderTargetView(fltRT, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); + ClearRenderTargetView(fltRT, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_shader_isa.cpp b/util/test/demos/d3d11/d3d11_shader_isa.cpp index effd7b675..8d4614878 100644 --- a/util/test/demos/d3d11/d3d11_shader_isa.cpp +++ b/util/test/demos/d3d11/d3d11_shader_isa.cpp @@ -52,8 +52,8 @@ RD_TEST(D3D11_Shader_ISA, D3D11GraphicsTest) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); - ClearRenderTargetView(fltRT, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); + ClearRenderTargetView(fltRT, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_simple_dispatch.cpp b/util/test/demos/d3d11/d3d11_simple_dispatch.cpp index 13637b713..5db451302 100644 --- a/util/test/demos/d3d11/d3d11_simple_dispatch.cpp +++ b/util/test/demos/d3d11/d3d11_simple_dispatch.cpp @@ -76,7 +76,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; ctx->ClearRenderTargetView(bbRTV, col); ctx->CSSetShader(cs, NULL, 0); diff --git a/util/test/demos/d3d11/d3d11_simple_triangle.cpp b/util/test/demos/d3d11/d3d11_simple_triangle.cpp index 1fd5c9842..755726933 100644 --- a/util/test/demos/d3d11/d3d11_simple_triangle.cpp +++ b/util/test/demos/d3d11/d3d11_simple_triangle.cpp @@ -52,8 +52,8 @@ RD_TEST(D3D11_Simple_Triangle, D3D11GraphicsTest) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); - ClearRenderTargetView(fltRT, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); + ClearRenderTargetView(fltRT, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_stream_out.cpp b/util/test/demos/d3d11/d3d11_stream_out.cpp index 647ebdcd5..be1b8cb42 100644 --- a/util/test/demos/d3d11/d3d11_stream_out.cpp +++ b/util/test/demos/d3d11/d3d11_stream_out.cpp @@ -101,7 +101,7 @@ RD_TEST(D3D11_Stream_Out, D3D11GraphicsTest) ctx->UpdateSubresource(so[0], 0, NULL, empty, 2048, 2048); ctx->UpdateSubresource(so[1], 0, NULL, empty, 2048, 2048); - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); @@ -124,14 +124,14 @@ RD_TEST(D3D11_Stream_Out, D3D11GraphicsTest) ctx->UpdateSubresource(so[0], 0, NULL, empty, 2048, 2048); ctx->UpdateSubresource(so[1], 0, NULL, empty, 2048, 2048); - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); ctx->Draw(3, 0); ctx->UpdateSubresource(so[0], 0, NULL, empty, 2048, 2048); ctx->UpdateSubresource(so[1], 0, NULL, empty, 2048, 2048); - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); // test using offsets of NULL. Should be equivalent to passing -1 bufs[0] = so[1]; diff --git a/util/test/demos/d3d11/d3d11_stripped_shaders.cpp b/util/test/demos/d3d11/d3d11_stripped_shaders.cpp index 50f0b49b3..e4a25db49 100644 --- a/util/test/demos/d3d11/d3d11_stripped_shaders.cpp +++ b/util/test/demos/d3d11/d3d11_stripped_shaders.cpp @@ -57,7 +57,7 @@ RD_TEST(D3D11_Stripped_Shaders, D3D11GraphicsTest) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_structured_buffer_misaligned_dirty.cpp b/util/test/demos/d3d11/d3d11_structured_buffer_misaligned_dirty.cpp index 87042de23..ec8d5cbc4 100644 --- a/util/test/demos/d3d11/d3d11_structured_buffer_misaligned_dirty.cpp +++ b/util/test/demos/d3d11/d3d11_structured_buffer_misaligned_dirty.cpp @@ -93,7 +93,7 @@ float4 main() : SV_Target0 { ctx->Flush(); - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); // map the buffer, but only update a misaligned section - so the update won't be aligned to // structured size. diff --git a/util/test/demos/d3d11/d3d11_structured_buffer_nested.cpp b/util/test/demos/d3d11/d3d11_structured_buffer_nested.cpp index 685e08f0e..9a8591693 100644 --- a/util/test/demos/d3d11/d3d11_structured_buffer_nested.cpp +++ b/util/test/demos/d3d11/d3d11_structured_buffer_nested.cpp @@ -107,7 +107,7 @@ float4 main() : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_structured_buffer_read.cpp b/util/test/demos/d3d11/d3d11_structured_buffer_read.cpp index 254fe12e1..ec9b402bd 100644 --- a/util/test/demos/d3d11/d3d11_structured_buffer_read.cpp +++ b/util/test/demos/d3d11/d3d11_structured_buffer_read.cpp @@ -79,7 +79,7 @@ float4 main() : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_texture_3d.cpp b/util/test/demos/d3d11/d3d11_texture_3d.cpp index 7f20c28fd..1de83e4ad 100644 --- a/util/test/demos/d3d11/d3d11_texture_3d.cpp +++ b/util/test/demos/d3d11/d3d11_texture_3d.cpp @@ -241,7 +241,7 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_texture_zoo.cpp b/util/test/demos/d3d11/d3d11_texture_zoo.cpp index f3a3734d1..ccdd7320f 100644 --- a/util/test/demos/d3d11/d3d11_texture_zoo.cpp +++ b/util/test/demos/d3d11/d3d11_texture_zoo.cpp @@ -1029,7 +1029,7 @@ int4 main(float4 pos : SV_Position, uint samp : SV_SampleIndex) : SV_Target0 while(Running()) { ctx->ClearState(); - ClearRenderTargetView(fltRT, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(fltRT, {0.2f, 0.2f, 0.2f, 1.0f}); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); diff --git a/util/test/demos/d3d11/d3d11_untyped_backbuffer_descriptor.cpp b/util/test/demos/d3d11/d3d11_untyped_backbuffer_descriptor.cpp index 4ddaa9937..31b1f76c5 100644 --- a/util/test/demos/d3d11/d3d11_untyped_backbuffer_descriptor.cpp +++ b/util/test/demos/d3d11/d3d11_untyped_backbuffer_descriptor.cpp @@ -53,7 +53,7 @@ RD_TEST(D3D11_Untyped_Backbuffer_Descriptor, D3D11GraphicsTest) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_vertex_attr_zoo.cpp b/util/test/demos/d3d11/d3d11_vertex_attr_zoo.cpp index b0c350bec..32be14c49 100644 --- a/util/test/demos/d3d11/d3d11_vertex_attr_zoo.cpp +++ b/util/test/demos/d3d11/d3d11_vertex_attr_zoo.cpp @@ -206,7 +206,7 @@ void main(triangle v2f input[3], inout TriangleStream TriStream) while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(vertin), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d11/d3d11_video_textures.cpp b/util/test/demos/d3d11/d3d11_video_textures.cpp index 967b299ab..fa5e7b8d7 100644 --- a/util/test/demos/d3d11/d3d11_video_textures.cpp +++ b/util/test/demos/d3d11/d3d11_video_textures.cpp @@ -755,7 +755,7 @@ float4 main(v2f IN) : SV_Target0 while(Running()) { - ClearRenderTargetView(bbRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(bbRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(vb, sizeof(DefaultA2V), 0); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); diff --git a/util/test/demos/d3d12/d3d12_cbuffer_zoo.cpp b/util/test/demos/d3d12/d3d12_cbuffer_zoo.cpp index f834deca8..a89eb78b6 100644 --- a/util/test/demos/d3d12/d3d12_cbuffer_zoo.cpp +++ b/util/test/demos/d3d12/d3d12_cbuffer_zoo.cpp @@ -355,11 +355,11 @@ float4 main() : SV_Target0 D3D12_CPU_DESCRIPTOR_HANDLE bbrtv = MakeRTV(bb).Format(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB).CreateCPU(0); - ClearRenderTargetView(cmd, bbrtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, bbrtv, {0.2f, 0.2f, 0.2f, 1.0f}); D3D12_CPU_DESCRIPTOR_HANDLE offrtv = MakeRTV(rtvtex).CreateCPU(0); - ClearRenderTargetView(cmd, offrtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, offrtv, {0.2f, 0.2f, 0.2f, 1.0f}); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d12/d3d12_mesh_zoo.cpp b/util/test/demos/d3d12/d3d12_mesh_zoo.cpp index 4a4f046f1..9e3b454d6 100644 --- a/util/test/demos/d3d12/d3d12_mesh_zoo.cpp +++ b/util/test/demos/d3d12/d3d12_mesh_zoo.cpp @@ -155,7 +155,7 @@ float4 main(v2f IN) : SV_Target0 OMSetRenderTargets(cmd, {rtv}, MakeDSV(dsv).CreateCPU(0)); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); ClearDepthStencilView(cmd, dsv, D3D12_CLEAR_FLAG_DEPTH | D3D12_CLEAR_FLAG_STENCIL, 1.0f, 0); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d12/d3d12_overlay_test.cpp b/util/test/demos/d3d12/d3d12_overlay_test.cpp index 0fdfd41db..dce99ac81 100644 --- a/util/test/demos/d3d12/d3d12_overlay_test.cpp +++ b/util/test/demos/d3d12/d3d12_overlay_test.cpp @@ -161,7 +161,7 @@ RD_TEST(D3D12_Overlay_Test, D3D12GraphicsTest) OMSetRenderTargets(cmd, {rtv}, MakeDSV(dsv).CreateCPU(0)); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); ClearDepthStencilView(cmd, dsv, D3D12_CLEAR_FLAG_DEPTH | D3D12_CLEAR_FLAG_STENCIL, 1.0f, 0); cmd->OMSetStencilRef(0x55); diff --git a/util/test/demos/d3d12/d3d12_resource_lifetimes.cpp b/util/test/demos/d3d12/d3d12_resource_lifetimes.cpp index a942a3f51..dcf027977 100644 --- a/util/test/demos/d3d12/d3d12_resource_lifetimes.cpp +++ b/util/test/demos/d3d12/d3d12_resource_lifetimes.cpp @@ -42,7 +42,8 @@ struct v2f Texture2D smiley : register(t0); Texture2D checker : register(t1); -SamplerState samp : register(s0); +SamplerState smileysamp : register(s0); +SamplerState checkersamp : register(s1); cbuffer consts : register(b0) { @@ -54,7 +55,9 @@ float4 main(v2f IN) : SV_Target0 if(flags.x != 1.0f || flags.y != 2.0f || flags.z != 4.0f || flags.w != 8.0f) return float4(1.0f, 0.0f, 1.0f, 1.0f); - return smiley.Sample(samp, IN.uv * 2.0f) * checker.Sample(samp, IN.uv * 5.0f); + float4 col = smiley.Sample(smileysamp, IN.uv * 2.0f) * checker.Sample(checkersamp, IN.uv * 5.0f); + col.w = 1.0f; + return col; } )EOSHADER"; @@ -71,8 +74,8 @@ float4 main(v2f IN) : SV_Target0 ID3D12ResourcePtr vb = MakeBuffer().Data(DefaultTri); D3D12_STATIC_SAMPLER_DESC samp = { - D3D12_FILTER_MIN_MAG_MIP_LINEAR, - D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_FILTER_MIN_MAG_MIP_POINT, + D3D12_TEXTURE_ADDRESS_MODE_CLAMP, D3D12_TEXTURE_ADDRESS_MODE_WRAP, D3D12_TEXTURE_ADDRESS_MODE_WRAP, 0.0f, @@ -86,13 +89,18 @@ float4 main(v2f IN) : SV_Target0 D3D12_SHADER_VISIBILITY_PIXEL, }; + D3D12_STATIC_SAMPLER_DESC samps[2]; + samps[0] = samps[1] = samp; + samps[1].ShaderRegister = 1; + samps[1].AddressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP; + ID3D12RootSignaturePtr sig = MakeSig( { tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 0, 0, 1, 0), tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 0, 1, 1, 1), tableParam(D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 0, 0, 1, 2), }, - D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT, 1, &samp); + D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT, 2, samps); ID3D12PipelineStatePtr pso = MakePSO().RootSig(sig).InputLayout().VS(vsblob).PS(psblob); @@ -420,7 +428,15 @@ float4 main(v2f IN) : SV_Target0 rtv = MakeRTV(bb).Format(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB).CreateCPU(0); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); + + D3D12_RECT rect = {0, 0, 128, 128}; + Vec4f col(0.0f, 1.0f, 0.0f, 1.0f); + cmd->ClearRenderTargetView(rtv, &col.x, 1, &rect); + + rect = {128, 0, 256, 128}; + col = Vec4f(0.0f, 0.0f, 1.0f, 1.0f); + cmd->ClearRenderTargetView(rtv, &col.x, 1, &rect); cmd->Close(); diff --git a/util/test/demos/d3d12/d3d12_shader_debug_zoo.cpp b/util/test/demos/d3d12/d3d12_shader_debug_zoo.cpp index 0df2a933f..5eb2a30cf 100644 --- a/util/test/demos/d3d12/d3d12_shader_debug_zoo.cpp +++ b/util/test/demos/d3d12/d3d12_shader_debug_zoo.cpp @@ -716,7 +716,7 @@ float4 main(v2f IN) : SV_Target0 D3D12_CPU_DESCRIPTOR_HANDLE rtv = MakeRTV(bb).Format(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB).CreateCPU(1); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); ID3D12PipelineStatePtr psos[2] = {pso_5_0, pso_5_1}; float blitOffsets[2] = {0.0f, 4.0f}; @@ -726,7 +726,7 @@ float4 main(v2f IN) : SV_Target0 // Clear, draw, and blit to backbuffer twice - once for SM 5.0 and again for SM 5.1 for(int i = 0; i < 2; ++i) { - ClearRenderTargetView(cmd, fltRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, fltRTV, {0.2f, 0.2f, 0.2f, 1.0f}); IASetVertexBuffer(cmd, vb, sizeof(ConstsA2V), 0); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d12/d3d12_shader_editing.cpp b/util/test/demos/d3d12/d3d12_shader_editing.cpp index dceaab696..a3dec18e9 100644 --- a/util/test/demos/d3d12/d3d12_shader_editing.cpp +++ b/util/test/demos/d3d12/d3d12_shader_editing.cpp @@ -93,8 +93,8 @@ float4 main() : SV_Target0 D3D12_CPU_DESCRIPTOR_HANDLE offrtv = MakeRTV(rtvtex).CreateCPU(0); - ClearRenderTargetView(cmd, offrtv, {0.4f, 0.5f, 0.6f, 1.0f}); - ClearRenderTargetView(cmd, bbrtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, offrtv, {0.2f, 0.2f, 0.2f, 1.0f}); + ClearRenderTargetView(cmd, bbrtv, {0.2f, 0.2f, 0.2f, 1.0f}); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d12/d3d12_shader_isa.cpp b/util/test/demos/d3d12/d3d12_shader_isa.cpp index 1f26e4e78..63361231c 100644 --- a/util/test/demos/d3d12/d3d12_shader_isa.cpp +++ b/util/test/demos/d3d12/d3d12_shader_isa.cpp @@ -62,9 +62,9 @@ RD_TEST(D3D12_Shader_ISA, D3D12GraphicsTest) D3D12_CPU_DESCRIPTOR_HANDLE rtv = MakeRTV(bb).Format(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB).CreateCPU(0); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); - ClearRenderTargetView(cmd, MakeRTV(rtvtex).CreateCPU(1), {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, MakeRTV(rtvtex).CreateCPU(1), {0.2f, 0.2f, 0.2f, 1.0f}); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d12/d3d12_simple_triangle.cpp b/util/test/demos/d3d12/d3d12_simple_triangle.cpp index 5b1e5a3ea..2e64e220f 100644 --- a/util/test/demos/d3d12/d3d12_simple_triangle.cpp +++ b/util/test/demos/d3d12/d3d12_simple_triangle.cpp @@ -62,9 +62,9 @@ RD_TEST(D3D12_Simple_Triangle, D3D12GraphicsTest) D3D12_CPU_DESCRIPTOR_HANDLE rtv = MakeRTV(bb).Format(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB).CreateCPU(0); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); - ClearRenderTargetView(cmd, MakeRTV(rtvtex).CreateCPU(1), {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, MakeRTV(rtvtex).CreateCPU(1), {0.2f, 0.2f, 0.2f, 1.0f}); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d12/d3d12_test.cpp b/util/test/demos/d3d12/d3d12_test.cpp index 612b4d1cb..e9e4d175e 100644 --- a/util/test/demos/d3d12/d3d12_test.cpp +++ b/util/test/demos/d3d12/d3d12_test.cpp @@ -260,6 +260,9 @@ bool D3D12GraphicsTest::Init() bbDesc.SampleDesc.Quality = 0; bbDesc.Width = screenWidth; + if(bbDesc.Format == DXGI_FORMAT_R8G8B8A8_UNORM) + bbDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM_SRGB; + D3D12_HEAP_PROPERTIES heapProps; heapProps.Type = D3D12_HEAP_TYPE_DEFAULT; heapProps.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; diff --git a/util/test/demos/d3d12/d3d12_texture_zoo.cpp b/util/test/demos/d3d12/d3d12_texture_zoo.cpp index 48f27e5d6..f76e6c449 100644 --- a/util/test/demos/d3d12/d3d12_texture_zoo.cpp +++ b/util/test/demos/d3d12/d3d12_texture_zoo.cpp @@ -1127,7 +1127,7 @@ int4 main(float4 pos : SV_Position, uint samp : SV_SampleIndex) : SV_Target0 D3D12_CPU_DESCRIPTOR_HANDLE fltRTV = MakeRTV(fltTex).CreateCPU(0); - ClearRenderTargetView(cmd, fltRTV, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, fltRTV, {0.2f, 0.2f, 0.2f, 1.0f}); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); @@ -1195,7 +1195,7 @@ int4 main(float4 pos : SV_Position, uint samp : SV_SampleIndex) : SV_Target0 D3D12_CPU_DESCRIPTOR_HANDLE rtv = MakeRTV(bb).Format(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB).CreateCPU(0); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); OMSetRenderTargets(cmd, {rtv}, {}); diff --git a/util/test/demos/d3d12/d3d12_untyped_backbuffer_descriptor.cpp b/util/test/demos/d3d12/d3d12_untyped_backbuffer_descriptor.cpp index 9646fec95..48c532a81 100644 --- a/util/test/demos/d3d12/d3d12_untyped_backbuffer_descriptor.cpp +++ b/util/test/demos/d3d12/d3d12_untyped_backbuffer_descriptor.cpp @@ -60,7 +60,7 @@ RD_TEST(D3D12_Untyped_Backbuffer_Descriptor, D3D12GraphicsTest) // create a descriptor with an UNKNOWN format D3D12_CPU_DESCRIPTOR_HANDLE rtv = MakeRTV(bb).Format(DXGI_FORMAT_UNKNOWN).CreateCPU(0); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d12/d3d12_vertex_attr_zoo.cpp b/util/test/demos/d3d12/d3d12_vertex_attr_zoo.cpp index 410031245..7ce8fa0d9 100644 --- a/util/test/demos/d3d12/d3d12_vertex_attr_zoo.cpp +++ b/util/test/demos/d3d12/d3d12_vertex_attr_zoo.cpp @@ -211,7 +211,7 @@ void main(triangle v2f input[3], inout TriangleStream TriStream) D3D12_CPU_DESCRIPTOR_HANDLE rtv = MakeRTV(bb).Format(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB).CreateCPU(0); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); diff --git a/util/test/demos/d3d12/d3d12_video_textures.cpp b/util/test/demos/d3d12/d3d12_video_textures.cpp index 3dce30104..030134398 100644 --- a/util/test/demos/d3d12/d3d12_video_textures.cpp +++ b/util/test/demos/d3d12/d3d12_video_textures.cpp @@ -648,7 +648,7 @@ float4 main(v2f IN) : SV_Target0 OMSetRenderTargets(cmd, {rtv}, {}); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); diff --git a/util/test/demos/d3d12/d3d12_write_subresource.cpp b/util/test/demos/d3d12/d3d12_write_subresource.cpp index aca307e30..7145f1ebc 100644 --- a/util/test/demos/d3d12/d3d12_write_subresource.cpp +++ b/util/test/demos/d3d12/d3d12_write_subresource.cpp @@ -121,7 +121,7 @@ float4 main(v2f IN) : SV_Target0 D3D12_CPU_DESCRIPTOR_HANDLE rtv = MakeRTV(bb).Format(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB).CreateCPU(0); - ClearRenderTargetView(cmd, rtv, {0.4f, 0.5f, 0.6f, 1.0f}); + ClearRenderTargetView(cmd, rtv, {0.2f, 0.2f, 0.2f, 1.0f}); cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); diff --git a/util/test/demos/gl/gl_buffer_spam.cpp b/util/test/demos/gl/gl_buffer_spam.cpp index a881fc830..8a9e60d72 100644 --- a/util/test/demos/gl/gl_buffer_spam.cpp +++ b/util/test/demos/gl/gl_buffer_spam.cpp @@ -110,7 +110,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_buffer_updates.cpp b/util/test/demos/gl/gl_buffer_updates.cpp index ba5c8968c..7ff7272e5 100644 --- a/util/test/demos/gl/gl_buffer_updates.cpp +++ b/util/test/demos/gl/gl_buffer_updates.cpp @@ -278,7 +278,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_callstacks.cpp b/util/test/demos/gl/gl_callstacks.cpp index 62440d3f3..8cabe1c0e 100644 --- a/util/test/demos/gl/gl_callstacks.cpp +++ b/util/test/demos/gl/gl_callstacks.cpp @@ -105,7 +105,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_cbuffer_zoo.cpp b/util/test/demos/gl/gl_cbuffer_zoo.cpp index 094c7a546..da2f7e76a 100644 --- a/util/test/demos/gl/gl_cbuffer_zoo.cpp +++ b/util/test/demos/gl/gl_cbuffer_zoo.cpp @@ -383,7 +383,7 @@ void main() { glBindFramebuffer(GL_FRAMEBUFFER, 0); - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindFramebuffer(GL_FRAMEBUFFER, fbo); diff --git a/util/test/demos/gl/gl_depthstencil_fbo.cpp b/util/test/demos/gl/gl_depthstencil_fbo.cpp index d0e0905c2..f8ac58623 100644 --- a/util/test/demos/gl/gl_depthstencil_fbo.cpp +++ b/util/test/demos/gl/gl_depthstencil_fbo.cpp @@ -162,7 +162,7 @@ void main() GLenum bufs[] = {GL_COLOR_ATTACHMENT0}; glDrawBuffers(1, bufs); - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glClearBufferfi(GL_DEPTH_STENCIL, 0, 1.0f, 0); diff --git a/util/test/demos/gl/gl_dx_interop.cpp b/util/test/demos/gl/gl_dx_interop.cpp index acd4fcf95..faf3750d0 100644 --- a/util/test/demos/gl/gl_dx_interop.cpp +++ b/util/test/demos/gl/gl_dx_interop.cpp @@ -157,8 +157,8 @@ void main() ID3D11ShaderResourceViewPtr srv = d3d.MakeSRV(d3d_tod3d); ID3D11RenderTargetViewPtr rtv2 = d3d.MakeRTV(d3d_tod3d); - float black[4] = {}; - d3d.ctx->ClearRenderTargetView(rtv2, black); + float base[4] = {0.2f, 0.2f, 0.2f, 1.0f}; + d3d.ctx->ClearRenderTargetView(rtv2, base); // initialise, create window, create context, etc if(!Init()) @@ -244,7 +244,7 @@ void main() TEST_ASSERT(res, "wglDXLockObjectsNV buffer failed"); - float col2[] = {0.6f, 0.4f, 0.6f, 1.0f}; + float col2[] = {0.0f, 1.0f, 0.0f, 1.0f}; ctx->ClearRenderTargetView(rtv, col2); ctx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); @@ -273,13 +273,11 @@ void main() glUseProgram(program); - glUniform2f(glGetUniformLocation(program, "wave"), sinf(delta * 0.9f), -cosf(delta * 2.7f)); - delta += 0.1f; glBindTexture(GL_TEXTURE_2D, gl_fromd3d); - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {1.0f, 0.0f, 0.0f, 1.0f}; // render back into d3d glViewport(0, 0, 1024, 1024); diff --git a/util/test/demos/gl/gl_entry_points.cpp b/util/test/demos/gl/gl_entry_points.cpp index b4f44f2c1..dfa51cd99 100644 --- a/util/test/demos/gl/gl_entry_points.cpp +++ b/util/test/demos/gl/gl_entry_points.cpp @@ -79,7 +79,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_large_bcn_arrays.cpp b/util/test/demos/gl/gl_large_bcn_arrays.cpp index 4095d6ae1..98d32cc2c 100644 --- a/util/test/demos/gl/gl_large_bcn_arrays.cpp +++ b/util/test/demos/gl/gl_large_bcn_arrays.cpp @@ -166,7 +166,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_map_overrun.cpp b/util/test/demos/gl/gl_map_overrun.cpp index f384158a8..dcdb780a6 100644 --- a/util/test/demos/gl/gl_map_overrun.cpp +++ b/util/test/demos/gl/gl_map_overrun.cpp @@ -104,7 +104,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_mesh_zoo.cpp b/util/test/demos/gl/gl_mesh_zoo.cpp index b6b45d694..ab053b889 100644 --- a/util/test/demos/gl/gl_mesh_zoo.cpp +++ b/util/test/demos/gl/gl_mesh_zoo.cpp @@ -211,7 +211,7 @@ void main() while(Running()) { glBindFramebuffer(GL_FRAMEBUFFER, fbo); - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glClearBufferfi(GL_DEPTH_STENCIL, 0, 1.0f, 0); diff --git a/util/test/demos/gl/gl_midframe_context_create.cpp b/util/test/demos/gl/gl_midframe_context_create.cpp index 80d07b59d..fbf275279 100644 --- a/util/test/demos/gl/gl_midframe_context_create.cpp +++ b/util/test/demos/gl/gl_midframe_context_create.cpp @@ -109,7 +109,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glUseProgram(program); diff --git a/util/test/demos/gl/gl_mip_gen_rt.cpp b/util/test/demos/gl/gl_mip_gen_rt.cpp index 781cb281b..35cefae3d 100644 --- a/util/test/demos/gl/gl_mip_gen_rt.cpp +++ b/util/test/demos/gl/gl_mip_gen_rt.cpp @@ -109,7 +109,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glBindFramebuffer(GL_FRAMEBUFFER, 0); glClearBufferfv(GL_COLOR, 0, col); diff --git a/util/test/demos/gl/gl_multi_window.cpp b/util/test/demos/gl/gl_multi_window.cpp index ca8898e1b..3ce914db1 100644 --- a/util/test/demos/gl/gl_multi_window.cpp +++ b/util/test/demos/gl/gl_multi_window.cpp @@ -123,7 +123,7 @@ void main() { ActivateContext(mainWindow, mainContext); - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_overlay_test.cpp b/util/test/demos/gl/gl_overlay_test.cpp index bfafdc7ce..62b6f2748 100644 --- a/util/test/demos/gl/gl_overlay_test.cpp +++ b/util/test/demos/gl/gl_overlay_test.cpp @@ -192,7 +192,7 @@ void main() glViewport(10, 10, GLsizei(screenWidth) - 20, GLsizei(screenHeight) - 20); glBindFramebuffer(GL_FRAMEBUFFER, fbo); - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glClearBufferfi(GL_DEPTH_STENCIL, 0, 1.0f, 0); diff --git a/util/test/demos/gl/gl_per_type_tex_units.cpp b/util/test/demos/gl/gl_per_type_tex_units.cpp index f7a0b7d55..10147de7e 100644 --- a/util/test/demos/gl/gl_per_type_tex_units.cpp +++ b/util/test/demos/gl/gl_per_type_tex_units.cpp @@ -139,7 +139,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_resource_lifetimes.cpp b/util/test/demos/gl/gl_resource_lifetimes.cpp index a13dd6d0c..60588b27f 100644 --- a/util/test/demos/gl/gl_resource_lifetimes.cpp +++ b/util/test/demos/gl/gl_resource_lifetimes.cpp @@ -378,15 +378,16 @@ void main() glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearNamedFramebufferfv(0, GL_COLOR, 0, col); // render with last frame's resources - float col1[] = {0.5f, 0.1f, 0.1f, 1.0f}; + float col1[] = {0.0f, 1.0f, 0.0f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col1); glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_SHORT, NULL); - glBlitNamedFramebuffer(fbo, 0, 0, 0, 128, 128, 0, 0, 128, 128, GL_COLOR_BUFFER_BIT, GL_NEAREST); + glBlitNamedFramebuffer(fbo, 0, 0, 0, 128, 128, 0, screenHeight - 128, 128, screenHeight, + GL_COLOR_BUFFER_BIT, GL_NEAREST); // trash last frame's resources TrashFBO(fbo); @@ -407,12 +408,12 @@ void main() pipe = SetupPipe(vsprog, fsprog); tex = SetupTex(); buf = SetupBuf(); - float col2[] = {0.1f, 0.1f, 0.5f, 1.0f}; + float col2[] = {0.0f, 0.0f, 1.0f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col2); glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_SHORT, NULL); - glBlitNamedFramebuffer(fbo, 0, 0, 0, 128, 128, 128, 0, 256, 128, GL_COLOR_BUFFER_BIT, - GL_NEAREST); + glBlitNamedFramebuffer(fbo, 0, 0, 0, 128, 128, 128, screenHeight - 128, 256, screenHeight, + GL_COLOR_BUFFER_BIT, GL_NEAREST); TrashFBO(fbo); TrashVAO(vao); TrashSampler(sampler); diff --git a/util/test/demos/gl/gl_runtime_bind_prog_to_pipe.cpp b/util/test/demos/gl/gl_runtime_bind_prog_to_pipe.cpp index b019c11aa..d7fa7db87 100644 --- a/util/test/demos/gl/gl_runtime_bind_prog_to_pipe.cpp +++ b/util/test/demos/gl/gl_runtime_bind_prog_to_pipe.cpp @@ -114,7 +114,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_separable_geometry_shader.cpp b/util/test/demos/gl/gl_separable_geometry_shader.cpp index ea6d0298e..c0b4d5a93 100644 --- a/util/test/demos/gl/gl_separable_geometry_shader.cpp +++ b/util/test/demos/gl/gl_separable_geometry_shader.cpp @@ -184,7 +184,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_shader_editing.cpp b/util/test/demos/gl/gl_shader_editing.cpp index 8134502c5..deda0e29f 100644 --- a/util/test/demos/gl/gl_shader_editing.cpp +++ b/util/test/demos/gl/gl_shader_editing.cpp @@ -177,7 +177,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_shader_isa.cpp b/util/test/demos/gl/gl_shader_isa.cpp index fffef31ac..e4780d8bd 100644 --- a/util/test/demos/gl/gl_shader_isa.cpp +++ b/util/test/demos/gl/gl_shader_isa.cpp @@ -105,7 +105,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glClearTexImage(tex, 0, GL_RGBA, GL_FLOAT, col); diff --git a/util/test/demos/gl/gl_simple_triangle.cpp b/util/test/demos/gl/gl_simple_triangle.cpp index aebb1289a..76569c90a 100644 --- a/util/test/demos/gl/gl_simple_triangle.cpp +++ b/util/test/demos/gl/gl_simple_triangle.cpp @@ -105,7 +105,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glClearTexImage(tex, 0, GL_RGBA, GL_FLOAT, col); diff --git a/util/test/demos/gl/gl_spirv_shader.cpp b/util/test/demos/gl/gl_spirv_shader.cpp index 4c5093541..e0b4d4dc1 100644 --- a/util/test/demos/gl/gl_spirv_shader.cpp +++ b/util/test/demos/gl/gl_spirv_shader.cpp @@ -224,7 +224,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); GLsizei w = GLsizei(screenWidth) >> 1; diff --git a/util/test/demos/gl/gl_structured_buffer_nested.cpp b/util/test/demos/gl/gl_structured_buffer_nested.cpp index b446f8cf0..aff9f099a 100644 --- a/util/test/demos/gl/gl_structured_buffer_nested.cpp +++ b/util/test/demos/gl/gl_structured_buffer_nested.cpp @@ -188,7 +188,7 @@ void main() glBindBuffer(GL_SHADER_STORAGE_BUFFER, outbuf); glClearBufferSubData(GL_SHADER_STORAGE_BUFFER, GL_RGBA32F, 0, 1024, GL_RGBA, GL_FLOAT, zeros); - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_texture_zoo.cpp b/util/test/demos/gl/gl_texture_zoo.cpp index 0a6026f93..31f6cd640 100644 --- a/util/test/demos/gl/gl_texture_zoo.cpp +++ b/util/test/demos/gl/gl_texture_zoo.cpp @@ -967,7 +967,7 @@ void main() { glBindFramebuffer(GL_FRAMEBUFFER, fbo); - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/gl/gl_unsized_ms_fbo_attachment.cpp b/util/test/demos/gl/gl_unsized_ms_fbo_attachment.cpp index 220653b31..de323e349 100644 --- a/util/test/demos/gl/gl_unsized_ms_fbo_attachment.cpp +++ b/util/test/demos/gl/gl_unsized_ms_fbo_attachment.cpp @@ -133,7 +133,7 @@ void main() GLenum bufs[] = {GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1}; glDrawBuffers(2, bufs); - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glClearBufferfi(GL_DEPTH_STENCIL, 0, 1.0f, 0); diff --git a/util/test/demos/gl/gl_vao_0.cpp b/util/test/demos/gl/gl_vao_0.cpp index 3ddd57569..7973359b2 100644 --- a/util/test/demos/gl/gl_vao_0.cpp +++ b/util/test/demos/gl/gl_vao_0.cpp @@ -104,7 +104,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); // try to delete VAO 0. Should do nothing diff --git a/util/test/demos/gl/gl_vertex_attr_zoo.cpp b/util/test/demos/gl/gl_vertex_attr_zoo.cpp index d540ae457..ac7a234c0 100644 --- a/util/test/demos/gl/gl_vertex_attr_zoo.cpp +++ b/util/test/demos/gl/gl_vertex_attr_zoo.cpp @@ -244,7 +244,7 @@ void main() while(Running()) { - float col[] = {0.4f, 0.5f, 0.6f, 1.0f}; + float col[] = {0.2f, 0.2f, 0.2f, 1.0f}; glClearBufferfv(GL_COLOR, 0, col); glBindVertexArray(vao); diff --git a/util/test/demos/test_common.cpp b/util/test/demos/test_common.cpp index 206e7f8a6..a2473aea8 100644 --- a/util/test/demos/test_common.cpp +++ b/util/test/demos/test_common.cpp @@ -28,9 +28,9 @@ #include const DefaultA2V DefaultTri[3] = { - {Vec3f(-0.5f, -0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.5f, -0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, {Vec3f(0.0f, 0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, - {Vec3f(0.5f, -0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, + {Vec3f(0.5f, -0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(1.0f, 0.0f)}, }; /* XPM */ diff --git a/util/test/demos/vk/vk_adv_cbuffer_zoo.cpp b/util/test/demos/vk/vk_adv_cbuffer_zoo.cpp index 92b1d4b37..949794ef5 100644 --- a/util/test/demos/vk/vk_adv_cbuffer_zoo.cpp +++ b/util/test/demos/vk/vk_adv_cbuffer_zoo.cpp @@ -373,7 +373,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_cbuffer_zoo.cpp b/util/test/demos/vk/vk_cbuffer_zoo.cpp index 14df68151..6b1556f9b 100644 --- a/util/test/demos/vk/vk_cbuffer_zoo.cpp +++ b/util/test/demos/vk/vk_cbuffer_zoo.cpp @@ -652,7 +652,7 @@ float4 main() : SV_Target0 StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdBeginRenderPass(cmd, vkh::RenderPassBeginInfo(renderPass, framebuffer, mainWindow->scissor, - {vkh::ClearValue(0.4f, 0.5f, 0.6f, 1.0f)}), + {vkh::ClearValue(0.2f, 0.2f, 0.2f, 1.0f)}), VK_SUBPASS_CONTENTS_INLINE); vkh::cmdBindDescriptorSets(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, layout, 0, {descset}, {}); diff --git a/util/test/demos/vk/vk_descriptor_index.cpp b/util/test/demos/vk/vk_descriptor_index.cpp index 75cfd7d7d..63df268e0 100644 --- a/util/test/demos/vk/vk_descriptor_index.cpp +++ b/util/test/demos/vk/vk_descriptor_index.cpp @@ -537,7 +537,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_COMPUTE, comppipe); diff --git a/util/test/demos/vk/vk_discard_rects.cpp b/util/test/demos/vk/vk_discard_rects.cpp index 49c394bf0..1cb6ba034 100644 --- a/util/test/demos/vk/vk_discard_rects.cpp +++ b/util/test/demos/vk/vk_discard_rects.cpp @@ -172,7 +172,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_draw_zoo.cpp b/util/test/demos/vk/vk_draw_zoo.cpp index e26ba8d9e..44593f8b3 100644 --- a/util/test/demos/vk/vk_draw_zoo.cpp +++ b/util/test/demos/vk/vk_draw_zoo.cpp @@ -315,7 +315,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_ext_buffer_address.cpp b/util/test/demos/vk/vk_ext_buffer_address.cpp index d4e603837..81109b33c 100644 --- a/util/test/demos/vk/vk_ext_buffer_address.cpp +++ b/util/test/demos/vk/vk_ext_buffer_address.cpp @@ -234,7 +234,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_image_layouts.cpp b/util/test/demos/vk/vk_image_layouts.cpp index b5857b7df..dfaaed776 100644 --- a/util/test/demos/vk/vk_image_layouts.cpp +++ b/util/test/demos/vk/vk_image_layouts.cpp @@ -186,7 +186,7 @@ void main() }); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); // the manual images are transitioned into general for copying, from pre-initialised and diff --git a/util/test/demos/vk/vk_imageless_framebuffer.cpp b/util/test/demos/vk/vk_imageless_framebuffer.cpp index ddacef1cd..acabf6ae2 100644 --- a/util/test/demos/vk/vk_imageless_framebuffer.cpp +++ b/util/test/demos/vk/vk_imageless_framebuffer.cpp @@ -177,7 +177,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); VkImageView curView = mainWindow->GetView(); diff --git a/util/test/demos/vk/vk_indirect.cpp b/util/test/demos/vk/vk_indirect.cpp index 2ca87c51d..6696d0840 100644 --- a/util/test/demos/vk/vk_indirect.cpp +++ b/util/test/demos/vk/vk_indirect.cpp @@ -195,42 +195,42 @@ void main() const DefaultA2V vbdata[24] = { // non-indexed indirect draw {Vec3f(-0.8f, 0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.7f, 0.8f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, - {Vec3f(-0.6f, 0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, + {Vec3f(-0.7f, 0.8f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, + {Vec3f(-0.6f, 0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(1.0f, 0.0f)}, // non-indexed KHR_draw_indirect_count draw - {Vec3f(-0.8f, -0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.8f, -0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, {Vec3f(-0.7f, -0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, - {Vec3f(-0.6f, -0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, + {Vec3f(-0.6f, -0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(1.0f, 0.0f)}, // indexed indirect draw 1 - {Vec3f(-0.6f, 0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.5f, 0.8f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, + {Vec3f(-0.6f, 0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.5f, 0.8f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 1.0f)}, {Vec3f(-0.4f, 0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, // indexed indirect draw 2 - {Vec3f(-0.4f, 0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.3f, 0.8f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, - {Vec3f(-0.2f, 0.8f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, - {Vec3f(-0.1f, 0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.0f, 0.8f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, - {Vec3f(0.1f, 0.8f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, + {Vec3f(-0.4f, 0.5f, 0.0f), Vec4f(1.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.3f, 0.8f, 0.0f), Vec4f(1.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, + {Vec3f(-0.2f, 0.8f, 0.0f), Vec4f(1.0f, 1.0f, 0.0f, 1.0f), Vec2f(1.0f, 0.0f)}, + {Vec3f(-0.1f, 0.5f, 0.0f), Vec4f(0.0f, 1.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.0f, 0.8f, 0.0f), Vec4f(0.0f, 1.0f, 1.0f, 1.0f), Vec2f(0.0f, 1.0f)}, + {Vec3f(0.1f, 0.8f, 0.0f), Vec4f(0.0f, 1.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, // indexed KHR_draw_indirect_count draw 1 - {Vec3f(-0.6f, -0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.5f, -0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, - {Vec3f(-0.4f, -0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, + {Vec3f(-0.6f, -0.5f, 0.0f), Vec4f(1.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.5f, -0.2f, 0.0f), Vec4f(1.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 1.0f)}, + {Vec3f(-0.4f, -0.5f, 0.0f), Vec4f(1.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, // indexed KHR_draw_indirect_count draw 2 // empty // indexed indirect draw 3 - {Vec3f(-0.4f, -0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.3f, -0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, - {Vec3f(-0.2f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, - {Vec3f(-0.1f, -0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.0f, -0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, - {Vec3f(0.1f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, + {Vec3f(-0.4f, -0.5f, 0.0f), Vec4f(0.5f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.3f, -0.2f, 0.0f), Vec4f(0.5f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, + {Vec3f(-0.2f, -0.2f, 0.0f), Vec4f(0.5f, 1.0f, 0.0f, 1.0f), Vec2f(1.0f, 0.0f)}, + {Vec3f(-0.1f, -0.5f, 0.0f), Vec4f(0.5f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.0f, -0.2f, 0.0f), Vec4f(0.5f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 1.0f)}, + {Vec3f(0.1f, -0.2f, 0.0f), Vec4f(0.5f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, }; AllocatedBuffer vb(this, @@ -281,7 +281,7 @@ void main() setMarker(primary, "Do Clear"); vkCmdClearColorImage(primary, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); { @@ -379,6 +379,8 @@ void main() } } + setMarker(primary, "Primary: Final"); + vkCmdEndRenderPass(primary); vkh::cmdPipelineBarrier( @@ -402,7 +404,7 @@ void main() vkBeginCommandBuffer(primary, vkh::CommandBufferBeginInfo()); vkCmdClearColorImage(primary, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); VkCommandBuffer dispatch_secondary = GetCommandBuffer(VK_COMMAND_BUFFER_LEVEL_SECONDARY); @@ -520,6 +522,8 @@ void main() vkCmdExecuteCommands(primary, 1, &draw_secondary); + setMarker(primary, "Secondary: Final"); + vkCmdEndRenderPass(primary); vkh::cmdPipelineBarrier( diff --git a/util/test/demos/vk/vk_int8_ibuffer.cpp b/util/test/demos/vk/vk_int8_ibuffer.cpp index 9deeb7b7f..d8703557e 100644 --- a/util/test/demos/vk/vk_int8_ibuffer.cpp +++ b/util/test/demos/vk/vk_int8_ibuffer.cpp @@ -109,23 +109,23 @@ void main() VkPipeline pipe = createGraphicsPipeline(pipeCreateInfo); DefaultA2V strip[] = { - {Vec3f(-0.8f, 0.2f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.8f, 0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, {Vec3f(-0.8f, 0.7f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.4f, 0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.4f, 0.7f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.4f, 0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.4f, 0.7f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, {Vec3f(0.0f, 0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.0f, 0.7f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.4f, 0.2f, 0.0f), Vec4f(1.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.4f, 0.7f, 0.0f), Vec4f(1.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.0f, 0.7f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.4f, 0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.4f, 0.7f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.8f, -0.7f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.8f, -0.2f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.8f, -0.7f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.8f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, {Vec3f(-0.4f, -0.7f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.4f, -0.2f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.0f, -0.7f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.4f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.0f, -0.7f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, {Vec3f(0.0f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.4f, -0.7f, 0.0f), Vec4f(1.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.4f, -0.2f, 0.0f), Vec4f(1.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.4f, -0.7f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.4f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, }; AllocatedBuffer vb(this, @@ -162,7 +162,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_khr_buffer_address.cpp b/util/test/demos/vk/vk_khr_buffer_address.cpp index bf8035193..098b6c2d9 100644 --- a/util/test/demos/vk/vk_khr_buffer_address.cpp +++ b/util/test/demos/vk/vk_khr_buffer_address.cpp @@ -264,7 +264,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_line_raster.cpp b/util/test/demos/vk/vk_line_raster.cpp index 64bc5dcab..37927f213 100644 --- a/util/test/demos/vk/vk_line_raster.cpp +++ b/util/test/demos/vk/vk_line_raster.cpp @@ -219,7 +219,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_mesh_zoo.cpp b/util/test/demos/vk/vk_mesh_zoo.cpp index 2a26bd758..32bbaa6a1 100644 --- a/util/test/demos/vk/vk_mesh_zoo.cpp +++ b/util/test/demos/vk/vk_mesh_zoo.cpp @@ -209,7 +209,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_misaligned_dirty.cpp b/util/test/demos/vk/vk_misaligned_dirty.cpp index dee2da425..5ece54098 100644 --- a/util/test/demos/vk/vk_misaligned_dirty.cpp +++ b/util/test/demos/vk/vk_misaligned_dirty.cpp @@ -131,7 +131,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); VkBufferCopy region = {}; diff --git a/util/test/demos/vk/vk_multi_thread_windows.cpp b/util/test/demos/vk/vk_multi_thread_windows.cpp index 77cad0c8e..ff5809e1f 100644 --- a/util/test/demos/vk/vk_multi_thread_windows.cpp +++ b/util/test/demos/vk/vk_multi_thread_windows.cpp @@ -155,7 +155,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL, win); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass(cmd, vkh::RenderPassBeginInfo(win->rp, win->GetFB(), win->scissor), diff --git a/util/test/demos/vk/vk_overlay_test.cpp b/util/test/demos/vk/vk_overlay_test.cpp index cc560a9ec..7c3cd1065 100644 --- a/util/test/demos/vk/vk_overlay_test.cpp +++ b/util/test/demos/vk/vk_overlay_test.cpp @@ -266,7 +266,7 @@ void main() vkh::cmdBindVertexBuffers(cmd, 0, {vb.buffer}, {0}); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_parameter_zoo.cpp b/util/test/demos/vk/vk_parameter_zoo.cpp index f5e05238d..778082d10 100644 --- a/util/test/demos/vk/vk_parameter_zoo.cpp +++ b/util/test/demos/vk/vk_parameter_zoo.cpp @@ -915,7 +915,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkEndCommandBuffer(cmd); @@ -1100,7 +1100,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_resource_lifetimes.cpp b/util/test/demos/vk/vk_resource_lifetimes.cpp index b00f01529..105b64934 100644 --- a/util/test/demos/vk/vk_resource_lifetimes.cpp +++ b/util/test/demos/vk/vk_resource_lifetimes.cpp @@ -85,6 +85,7 @@ void main() } Color = texture(smiley, vertIn.uv.xy * 2.0f) * texture(checker, vertIn.uv.xy * 5.0f); + Color.w = 1.0f; } )EOSHADER"; @@ -202,13 +203,18 @@ void main() badcb.upload(&flags, sizeof(flags)); - VkSampler sampler = VK_NULL_HANDLE; + VkSampler checkersampler = VK_NULL_HANDLE; + VkSampler smileysampler = VK_NULL_HANDLE; VkSamplerCreateInfo sampInfo = {VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO}; - sampInfo.magFilter = VK_FILTER_LINEAR; - sampInfo.minFilter = VK_FILTER_LINEAR; + sampInfo.magFilter = VK_FILTER_NEAREST; + sampInfo.minFilter = VK_FILTER_NEAREST; - vkCreateSampler(device, &sampInfo, NULL, &sampler); + vkCreateSampler(device, &sampInfo, NULL, &checkersampler); + + sampInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; + + vkCreateSampler(device, &sampInfo, NULL, &smileysampler); auto SetupBuffer = [this]() { VkBuffer cb = VK_NULL_HANDLE; @@ -378,35 +384,36 @@ void main() NULL, &descpool)); } - auto SetupDescSet = [this, setlayout, descpool, sampler, smileyview](VkBuffer cb, - VkImageView view) { + auto SetupDescSet = [this, setlayout, descpool, smileysampler, checkersampler, smileyview]( + VkBuffer cb, VkImageView view) { VkDescriptorSet descset = VK_NULL_HANDLE; vkAllocateDescriptorSets(device, vkh::DescriptorSetAllocateInfo(descpool, {setlayout}), &descset); vkh::updateDescriptorSets( - device, { - vkh::WriteDescriptorSet( - descset, 0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, - { - vkh::DescriptorImageInfo( - smileyview, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, sampler), - }), - vkh::WriteDescriptorSet( - descset, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, - { - vkh::DescriptorImageInfo( - view, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, sampler), - }), - vkh::WriteDescriptorSet(descset, 2, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, - {vkh::DescriptorBufferInfo(cb)}), - }); + device, + { + vkh::WriteDescriptorSet( + descset, 0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + { + vkh::DescriptorImageInfo(smileyview, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + smileysampler), + }), + vkh::WriteDescriptorSet( + descset, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + { + vkh::DescriptorImageInfo(view, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + checkersampler), + }), + vkh::WriteDescriptorSet(descset, 2, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + {vkh::DescriptorBufferInfo(cb)}), + }); return descset; }; - auto TrashDescSet = [this, descpool, sampler, &badcb, badview](VkDescriptorSet descset) { + auto TrashDescSet = [this, descpool, checkersampler, &badcb, badview](VkDescriptorSet descset) { // update with bad data vkh::updateDescriptorSets( @@ -415,13 +422,13 @@ void main() descset, 0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, { vkh::DescriptorImageInfo( - badview, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, sampler), + badview, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, checkersampler), }), vkh::WriteDescriptorSet( descset, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, { vkh::DescriptorImageInfo( - badview, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, sampler), + badview, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, checkersampler), }), vkh::WriteDescriptorSet(descset, 2, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, {vkh::DescriptorBufferInfo(badcb.buffer)}), @@ -450,7 +457,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkEndCommandBuffer(cmd); @@ -468,6 +475,11 @@ void main() cmd, vkh::RenderPassBeginInfo(mainWindow->rp, mainWindow->GetFB(), mainWindow->scissor), VK_SUBPASS_CONTENTS_INLINE); + VkClearAttachment att = {VK_IMAGE_ASPECT_COLOR_BIT, 0, + vkh::ClearValue(0.0f, 1.0f, 0.0f, 1.0f)}; + VkClearRect rect = {vkh::Rect2D({0, 0}, {128, 128}), 0, 1}; + vkCmdClearAttachments(cmd, 1, &att, 1, &rect); + vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, pipe); vkCmdBindDescriptorSets(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, layout, 0, 1, &descset, 0, NULL); @@ -509,6 +521,11 @@ void main() cmd, vkh::RenderPassBeginInfo(mainWindow->rp, mainWindow->GetFB(), mainWindow->scissor), VK_SUBPASS_CONTENTS_INLINE); + VkClearAttachment att = {VK_IMAGE_ASPECT_COLOR_BIT, 0, + vkh::ClearValue(0.0f, 0.0f, 1.0f, 1.0f)}; + VkClearRect rect = {vkh::Rect2D({128, 0}, {128, 128}), 0, 1}; + vkCmdClearAttachments(cmd, 1, &att, 1, &rect); + vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, pipe); vkCmdBindDescriptorSets(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, layout, 0, 1, &descset, 0, NULL); @@ -563,7 +580,8 @@ void main() TrashDescSet(descset); vkDestroyDescriptorPool(device, descpool, NULL); - vkDestroySampler(device, sampler, NULL); + vkDestroySampler(device, checkersampler, NULL); + vkDestroySampler(device, smileysampler, NULL); return 0; } diff --git a/util/test/demos/vk/vk_sample_locations.cpp b/util/test/demos/vk/vk_sample_locations.cpp index ce8cf3abb..abd56cdbb 100644 --- a/util/test/demos/vk/vk_sample_locations.cpp +++ b/util/test/demos/vk/vk_sample_locations.cpp @@ -179,7 +179,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkh::cmdPipelineBarrier( diff --git a/util/test/demos/vk/vk_secondary_cmdbuf.cpp b/util/test/demos/vk/vk_secondary_cmdbuf.cpp index 6532ec740..701c8399b 100644 --- a/util/test/demos/vk/vk_secondary_cmdbuf.cpp +++ b/util/test/demos/vk/vk_secondary_cmdbuf.cpp @@ -137,12 +137,12 @@ void main() setName(pipe1, "Pipeline 1"); const DefaultA2V TwoTris[] = { - {Vec3f(-0.75f, -0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(-0.25f, 0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, - {Vec3f(0.25f, -0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, + {Vec3f(-0.75f, -0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(-0.5f, 0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, + {Vec3f(-0.25f, -0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(1.0f, 0.0f)}, - {Vec3f(-0.25f, -0.5f, 0.0f), Vec4f(1.0f, 0.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, - {Vec3f(0.25f, 0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 1.0f)}, + {Vec3f(0.25f, -0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 0.0f)}, + {Vec3f(0.5f, 0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 1.0f)}, {Vec3f(0.75f, -0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, }; @@ -180,11 +180,11 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass(cmd, vkh::RenderPassBeginInfo(renderPass, framebuffer, size, - {vkh::ClearValue(0.0f, 0.0f, 0.0f, 1.0f)}), + {vkh::ClearValue(0.2f, 0.2f, 0.2f, 1.0f)}), VK_SUBPASS_CONTENTS_INLINE); vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, pipe0); diff --git a/util/test/demos/vk/vk_shader_editing.cpp b/util/test/demos/vk/vk_shader_editing.cpp index c02759c1e..350dc8ed4 100644 --- a/util/test/demos/vk/vk_shader_editing.cpp +++ b/util/test/demos/vk/vk_shader_editing.cpp @@ -129,7 +129,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdBeginRenderPass(cmd, vkh::RenderPassBeginInfo(renderPass, framebuffer, mainWindow->scissor, - {vkh::ClearValue(0.4f, 0.5f, 0.6f, 1.0f)}), + {vkh::ClearValue(0.2f, 0.2f, 0.2f, 1.0f)}), VK_SUBPASS_CONTENTS_INLINE); VkViewport v = mainWindow->viewport; diff --git a/util/test/demos/vk/vk_shader_isa.cpp b/util/test/demos/vk/vk_shader_isa.cpp index d9a783d8d..45c523e97 100644 --- a/util/test/demos/vk/vk_shader_isa.cpp +++ b/util/test/demos/vk/vk_shader_isa.cpp @@ -121,7 +121,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkh::cmdPipelineBarrier( @@ -131,7 +131,7 @@ void main() }); vkCmdClearColorImage(cmd, offimg.image, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_simple_triangle.cpp b/util/test/demos/vk/vk_simple_triangle.cpp index be9554f7c..97fbb71d9 100644 --- a/util/test/demos/vk/vk_simple_triangle.cpp +++ b/util/test/demos/vk/vk_simple_triangle.cpp @@ -121,7 +121,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkh::cmdPipelineBarrier( @@ -131,7 +131,7 @@ void main() }); vkCmdClearColorImage(cmd, offimg.image, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_spec_constants.cpp b/util/test/demos/vk/vk_spec_constants.cpp index bb81c3f29..805709eeb 100644 --- a/util/test/demos/vk/vk_spec_constants.cpp +++ b/util/test/demos/vk/vk_spec_constants.cpp @@ -146,7 +146,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_spirv_13_shaders.cpp b/util/test/demos/vk/vk_spirv_13_shaders.cpp index 1a5bbbe02..97910331d 100644 --- a/util/test/demos/vk/vk_spirv_13_shaders.cpp +++ b/util/test/demos/vk/vk_spirv_13_shaders.cpp @@ -110,7 +110,7 @@ void fragmain(in float4 incol : COL, out float4 ocol : SV_Target0) StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_structured_buffer_nested.cpp b/util/test/demos/vk/vk_structured_buffer_nested.cpp index 7de945314..5f6c75fd2 100644 --- a/util/test/demos/vk/vk_structured_buffer_nested.cpp +++ b/util/test/demos/vk/vk_structured_buffer_nested.cpp @@ -277,7 +277,7 @@ float4 main() : SV_Target0 StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkh::cmdPipelineBarrier( diff --git a/util/test/demos/vk/vk_texture_zoo.cpp b/util/test/demos/vk/vk_texture_zoo.cpp index 5fbd70e1b..92a2fd451 100644 --- a/util/test/demos/vk/vk_texture_zoo.cpp +++ b/util/test/demos/vk/vk_texture_zoo.cpp @@ -1417,7 +1417,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdBeginRenderPass(cmd, vkh::RenderPassBeginInfo(rp, framebuffer, mainWindow->scissor, - {vkh::ClearValue(0.4f, 0.5f, 0.6f, 1.0f)}), + {vkh::ClearValue(0.2f, 0.2f, 0.2f, 1.0f)}), VK_SUBPASS_CONTENTS_INLINE); VkViewport view = {0.0f, 0.0f, 10.0f, 10.0f, 0.0f, 1.0f}; diff --git a/util/test/demos/vk/vk_triangle_fan.cpp b/util/test/demos/vk/vk_triangle_fan.cpp index d0da412dd..a0978e4bc 100644 --- a/util/test/demos/vk/vk_triangle_fan.cpp +++ b/util/test/demos/vk/vk_triangle_fan.cpp @@ -153,7 +153,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_truncated_cbuffer.cpp b/util/test/demos/vk/vk_truncated_cbuffer.cpp index 210a4b037..abc97f816 100644 --- a/util/test/demos/vk/vk_truncated_cbuffer.cpp +++ b/util/test/demos/vk/vk_truncated_cbuffer.cpp @@ -154,7 +154,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_vertex_attr_zoo.cpp b/util/test/demos/vk/vk_vertex_attr_zoo.cpp index 8bebe230a..c31921c64 100644 --- a/util/test/demos/vk/vk_vertex_attr_zoo.cpp +++ b/util/test/demos/vk/vk_vertex_attr_zoo.cpp @@ -393,7 +393,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_video_textures.cpp b/util/test/demos/vk/vk_video_textures.cpp index ea3baf7c4..a04201af2 100644 --- a/util/test/demos/vk/vk_video_textures.cpp +++ b/util/test/demos/vk/vk_video_textures.cpp @@ -911,7 +911,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/demos/vk/vk_vs_max_desc_set.cpp b/util/test/demos/vk/vk_vs_max_desc_set.cpp index 4afc2f0c6..44793ce91 100644 --- a/util/test/demos/vk/vk_vs_max_desc_set.cpp +++ b/util/test/demos/vk/vk_vs_max_desc_set.cpp @@ -229,7 +229,7 @@ void main() StartUsingBackbuffer(cmd, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_GENERAL); vkCmdClearColorImage(cmd, swapimg, VK_IMAGE_LAYOUT_GENERAL, - vkh::ClearColorValue(0.4f, 0.5f, 0.6f, 1.0f), 1, + vkh::ClearColorValue(0.2f, 0.2f, 0.2f, 1.0f), 1, vkh::ImageSubresourceRange()); vkCmdBeginRenderPass( diff --git a/util/test/rdtest/testcase.py b/util/test/rdtest/testcase.py index 8908bb2d6..c6bdde628 100644 --- a/util/test/rdtest/testcase.py +++ b/util/test/rdtest/testcase.py @@ -308,11 +308,28 @@ class TestCase: if type(y) is float: y = int((tex_details.height-1) * y) - picked: rd.PixelValue = self.controller.PickPixel(tex, x, y, rd.Subresource(0, 0, 0), rd.CompType.Typeless) + cast = rd.CompType.Typeless + if tex_details.creationFlags & rd.TextureCategory.SwapBuffer: + cast = rd.CompType.UNormSRGB + + # Reduce epsilon for RGBA8 textures if it's not already reduced + if tex_details.format.compByteWidth == 1 and eps == util.FLT_EPSILON: + eps = (1.0 / 255.0) + + picked: rd.PixelValue = self.controller.PickPixel(tex, x, y, rd.Subresource(0, 0, 0), cast) if not util.value_compare(picked.floatValue, value, eps): + save_data = rd.TextureSave() + save_data.resourceId = tex + save_data.destType = rd.FileType.PNG + + img_path = util.get_tmp_path('output.png') + + self.controller.SaveTexture(save_data, img_path) + raise TestFailureException( - "Picked value {} at {},{} doesn't match expectation of {}".format(picked.floatValue, x, y, value)) + "Picked value {} at {},{} doesn't match expectation of {}".format(picked.floatValue, x, y, value), + img_path) log.success("Picked value at {},{} in {} is as expected".format(x, y, res_details.name)) @@ -331,17 +348,17 @@ class TestCase: if fore is None: fore = [0.0, 1.0, 0.0, 1.0] if vp is None: - vp = (float(tex_details.width), float(tex_details.height), 0.0, 0.0) + vp = (0.0, 0.0, float(tex_details.width), float(tex_details.height)) - self.check_pixel_value(out, int(0.5*vp[0]+vp[2]), int(0.5*vp[1]+vp[3]), fore) - self.check_pixel_value(out, int(0.5*vp[0]+vp[2]), int(0.3*vp[1]+vp[3]), fore) - self.check_pixel_value(out, int(0.3*vp[0]+vp[2]), int(0.7*vp[1]+vp[3]), fore) - self.check_pixel_value(out, int(0.7*vp[0]+vp[2]), int(0.7*vp[1]+vp[3]), fore) + self.check_pixel_value(out, int(0.5*vp[2]+vp[0]), int(0.5*vp[3]+vp[1]), fore) + self.check_pixel_value(out, int(0.5*vp[2]+vp[0]), int(0.3*vp[3]+vp[1]), fore) + self.check_pixel_value(out, int(0.3*vp[2]+vp[0]), int(0.7*vp[3]+vp[1]), fore) + self.check_pixel_value(out, int(0.7*vp[2]+vp[0]), int(0.7*vp[3]+vp[1]), fore) - self.check_pixel_value(out, int(0.3*vp[0]+vp[2]), int(0.5*vp[1]+vp[3]), back) - self.check_pixel_value(out, int(0.7*vp[0]+vp[2]), int(0.5*vp[1]+vp[3]), back) - self.check_pixel_value(out, int(0.5*vp[0]+vp[2]), int(0.8*vp[1]+vp[3]), back) - self.check_pixel_value(out, int(0.5*vp[0]+vp[2]), int(0.2*vp[1]+vp[3]), back) + self.check_pixel_value(out, int(0.3*vp[2]+vp[0]), int(0.5*vp[3]+vp[1]), back) + self.check_pixel_value(out, int(0.7*vp[2]+vp[0]), int(0.5*vp[3]+vp[1]), back) + self.check_pixel_value(out, int(0.5*vp[2]+vp[0]), int(0.8*vp[3]+vp[1]), back) + self.check_pixel_value(out, int(0.5*vp[2]+vp[0]), int(0.2*vp[3]+vp[1]), back) log.success("Simple triangle is as expected") diff --git a/util/test/tests/D3D11/D3D11_Overlay_Test.py b/util/test/tests/D3D11/D3D11_Overlay_Test.py index 797e8a212..a9e8f194e 100644 --- a/util/test/tests/D3D11/D3D11_Overlay_Test.py +++ b/util/test/tests/D3D11/D3D11_Overlay_Test.py @@ -35,8 +35,6 @@ class D3D11_Overlay_Test(rdtest.TestCase): rdtest.log.success("Reference and output image are identical for {}".format(test_name)) def check_capture(self): - self.check_final_backbuffer() - out: rd.ReplayOutput = self.controller.CreateOutput(rd.CreateHeadlessWindowingData(100, 100), rd.ReplayOutputType.Texture) self.check(out is not None) @@ -50,6 +48,34 @@ class D3D11_Overlay_Test(rdtest.TestCase): tex = rd.TextureDisplay() tex.resourceId = pipe.GetOutputTargets()[0].resourceId + # Check the actual output is as expected first. + + # Background around the outside + self.check_pixel_value(tex.resourceId, 0.1, 0.1, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex.resourceId, 0.8, 0.1, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex.resourceId, 0.5, 0.95, [0.2, 0.2, 0.2, 1.0]) + + # Large dark grey triangle + self.check_pixel_value(tex.resourceId, 0.5, 0.1, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.5, 0.9, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.2, 0.9, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.8, 0.9, [0.1, 0.1, 0.1, 1.0]) + + # Red upper half triangle + self.check_pixel_value(tex.resourceId, 0.3, 0.4, [1.0, 0.0, 0.0, 1.0]) + # Blue lower half triangle + self.check_pixel_value(tex.resourceId, 0.3, 0.6, [0.0, 0.0, 1.0, 1.0]) + + # Floating clipped triangle + self.check_pixel_value(tex.resourceId, 335, 140, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex.resourceId, 340, 140, [0.2, 0.2, 0.2, 1.0]) + + # Triangle size triangles + self.check_pixel_value(tex.resourceId, 200, 51, [1.0, 0.5, 1.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 65, [1.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 79, [0.0, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 93, [0.0, 1.0, 0.0, 1.0]) + for overlay in rd.DebugOverlay: if overlay == rd.DebugOverlay.NoOverlay: continue diff --git a/util/test/tests/D3D11/D3D11_Primitive_Restart.py b/util/test/tests/D3D11/D3D11_Primitive_Restart.py index f5c680e0f..d99d5a13b 100644 --- a/util/test/tests/D3D11/D3D11_Primitive_Restart.py +++ b/util/test/tests/D3D11/D3D11_Primitive_Restart.py @@ -6,8 +6,6 @@ class D3D11_Primitive_Restart(rdtest.TestCase): demos_test_name = 'D3D11_Primitive_Restart' def check_capture(self): - self.check_final_backbuffer() - draw = self.find_draw("Draw") self.check(draw is not None) @@ -27,7 +25,7 @@ class D3D11_Primitive_Restart(rdtest.TestCase): 'vtx': 0, 'idx': 0, 'SV_POSITION': [-0.8, 0.2, 0.0, 1.0], - 'COLOR': [1.0, 0.0, 0.0, 1.0], + 'COLOR': [0.0, 1.0, 0.0, 1.0], 'TEXCOORD': [0.0, 0.0], }, 4: { @@ -44,7 +42,7 @@ class D3D11_Primitive_Restart(rdtest.TestCase): 'vtx': 9, 'idx': 8, 'SV_POSITION': [-0.8, -0.7, 0.0, 1.0], - 'COLOR': [1.0, 0.0, 0.0, 1.0], + 'COLOR': [0.0, 0.0, 1.0, 1.0], 'TEXCOORD': [0.0, 0.0], }, } @@ -63,3 +61,17 @@ class D3D11_Primitive_Restart(rdtest.TestCase): # Data should be identical self.check_mesh_data(postvs_ref, postvs_data) + + # Check that the rendered mesh is as expected + out = pipe.GetOutputTargets()[0].resourceId + for x in [x*0.01 for x in range(1, 100)]: + self.check_pixel_value(out, x, 0.1, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(out, x, 0.5, [0.2, 0.2, 0.2, 1.0]) + + self.check_pixel_value(out, 0.3, 0.25, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(out, 0.5, 0.25, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(out, 0.7, 0.25, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(out, 0.3, 0.75, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(out, 0.5, 0.75, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(out, 0.7, 0.75, [0.0, 0.0, 1.0, 1.0]) + diff --git a/util/test/tests/D3D11/D3D11_Resource_Lifetimes.py b/util/test/tests/D3D11/D3D11_Resource_Lifetimes.py index 8d4b0de2a..5e017dd81 100644 --- a/util/test/tests/D3D11/D3D11_Resource_Lifetimes.py +++ b/util/test/tests/D3D11/D3D11_Resource_Lifetimes.py @@ -7,7 +7,50 @@ class D3D11_Resource_Lifetimes(rdtest.TestCase): demos_frame_cap = 200 def check_capture(self): - self.check_final_backbuffer() + last_draw: rd.DrawcallDescription = self.get_last_draw() + + self.controller.SetFrameEvent(last_draw.eventId, True) + + tex = last_draw.copyDestination + + # green background around first triangle, blue around second + self.check_pixel_value(tex, 10, 10, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 118, 10, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 118, 118, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 10, 118, [0.0, 1.0, 0.0, 1.0]) + + self.check_pixel_value(tex, 138, 10, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 246, 10, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 246, 118, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 138, 118, [0.0, 0.0, 1.0, 1.0]) + + # Sample across each triangle, we expect things to be identical + for xoffs in [0, 128]: + # Check black checkerboard squares + self.check_pixel_value(tex, xoffs+42, 92, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+40, 85, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+68, 66, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+59, 47, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+81, 92, [0.0, 0.0, 0.0, 1.0]) + + # Check the red and green eyes of the smiley + self.check_pixel_value(tex, xoffs+49, 83, [1.0, 0.0, 0.09, 1.0]) + self.check_pixel_value(tex, xoffs+60, 83, [0.0, 1.0, 0.09, 1.0]) + + # Check the blue smile + self.check_pixel_value(tex, xoffs+64, 72, [0.09, 0.0, 1.0, 1.0]) + + # Check the orange face + self.check_pixel_value(tex, xoffs+46, 86, [1.0, 0.55, 0.36, 1.0]) + + # Check the empty space where we clamped and didn't repeat + self.check_pixel_value(tex, xoffs+82, 79, [0.72, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex, xoffs+84, 86, [0.72, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex, xoffs+88, 92, [0.72, 1.0, 1.0, 1.0]) + + # Check that the repeated smiley above is there + self.check_pixel_value(tex, xoffs+67, 53, [0.91, 0.636, 0.36, 1.0]) + self.check_pixel_value(tex, xoffs+65, 50, [1.0, 0.0, 0.09, 1.0]) # Check for resource leaks if len(self.controller.GetResources()) > 75: diff --git a/util/test/tests/D3D11/D3D11_Shader_Editing.py b/util/test/tests/D3D11/D3D11_Shader_Editing.py index 156872cd5..5b1f0e948 100644 --- a/util/test/tests/D3D11/D3D11_Shader_Editing.py +++ b/util/test/tests/D3D11/D3D11_Shader_Editing.py @@ -110,8 +110,8 @@ class D3D11_Shader_Editing(rdtest.TestCase): self.controller.SetFrameEvent(eid, True) # Original sample positions are now the clear color - self.check_pixel_value(tex, 0.25, 0.5, [0.4, 0.5, 0.6, 1.0]) - self.check_pixel_value(tex, 0.75, 0.5, [0.4, 0.5, 0.6, 1.0]) + self.check_pixel_value(tex, 0.25, 0.5, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex, 0.75, 0.5, [0.2, 0.2, 0.2, 1.0]) # Triangles have green and blue channel self.check_pixel_value(tex, 0.45, 0.05, [0.0, 1.0, 1.0, 1.0]) @@ -124,8 +124,8 @@ class D3D11_Shader_Editing(rdtest.TestCase): self.controller.SetFrameEvent(eid, True) # Original sample positions are still the clear color - self.check_pixel_value(tex, 0.25, 0.5, [0.4, 0.5, 0.6, 1.0]) - self.check_pixel_value(tex, 0.75, 0.5, [0.4, 0.5, 0.6, 1.0]) + self.check_pixel_value(tex, 0.25, 0.5, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex, 0.75, 0.5, [0.2, 0.2, 0.2, 1.0]) # The right triangle is the edited colour, the other two have reverted to green channel only self.check_pixel_value(tex, 0.45, 0.05, [0.0, 1.0, 0.0, 1.0]) diff --git a/util/test/tests/D3D11/D3D11_Simple_Triangle.py b/util/test/tests/D3D11/D3D11_Simple_Triangle.py index d777db434..c6a336d9f 100644 --- a/util/test/tests/D3D11/D3D11_Simple_Triangle.py +++ b/util/test/tests/D3D11/D3D11_Simple_Triangle.py @@ -6,7 +6,11 @@ class D3D11_Simple_Triangle(rdtest.TestCase): demos_test_name = 'D3D11_Simple_Triangle' def check_capture(self): - self.check_final_backbuffer() + last_draw: rd.DrawcallDescription = self.get_last_draw() + + self.controller.SetFrameEvent(last_draw.eventId, True) + + self.check_triangle(out=last_draw.copyDestination) self.check_export(self.capture_filename) @@ -21,7 +25,7 @@ class D3D11_Simple_Triangle(rdtest.TestCase): 'vtx': 0, 'idx': 0, 'SV_POSITION': [-0.5, -0.5, 0.0, 1.0], - 'COLOR': [1.0, 0.0, 0.0, 1.0], + 'COLOR': [0.0, 1.0, 0.0, 1.0], 'TEXCOORD': [0.0, 0.0], }, 1: { @@ -35,7 +39,7 @@ class D3D11_Simple_Triangle(rdtest.TestCase): 'vtx': 2, 'idx': 2, 'SV_POSITION': [0.5, -0.5, 0.0, 1.0], - 'COLOR': [0.0, 0.0, 1.0, 1.0], + 'COLOR': [0.0, 1.0, 0.0, 1.0], 'TEXCOORD': [1.0, 0.0], }, } diff --git a/util/test/tests/D3D12/D3D12_Execute_Indirect.py b/util/test/tests/D3D12/D3D12_Execute_Indirect.py index 3d9f606ca..6212df069 100644 --- a/util/test/tests/D3D12/D3D12_Execute_Indirect.py +++ b/util/test/tests/D3D12/D3D12_Execute_Indirect.py @@ -10,17 +10,5 @@ class D3D12_Execute_Indirect(rdtest.TestCase): self.controller.SetFrameEvent(draw.eventId, False) - pipe: rd.PipeState = self.controller.GetPipelineState() - - # Should be a green triangle in the centre of the screen - self.check_pixel_value(pipe.GetOutputTargets()[0].resourceId, 0.5, 0.5, [0.0, 1.0, 0.0, 1.0]) - self.check_pixel_value(pipe.GetOutputTargets()[0].resourceId, 0.5, 0.3, [0.0, 1.0, 0.0, 1.0]) - self.check_pixel_value(pipe.GetOutputTargets()[0].resourceId, 0.3, 0.7, [0.0, 1.0, 0.0, 1.0]) - self.check_pixel_value(pipe.GetOutputTargets()[0].resourceId, 0.7, 0.7, [0.0, 1.0, 0.0, 1.0]) - - self.check_pixel_value(pipe.GetOutputTargets()[0].resourceId, 0.3, 0.5, [1.0, 0.0, 0.0, 1.0]) - self.check_pixel_value(pipe.GetOutputTargets()[0].resourceId, 0.7, 0.5, [1.0, 0.0, 0.0, 1.0]) - self.check_pixel_value(pipe.GetOutputTargets()[0].resourceId, 0.5, 0.8, [1.0, 0.0, 0.0, 1.0]) - self.check_pixel_value(pipe.GetOutputTargets()[0].resourceId, 0.5, 0.2, [1.0, 0.0, 0.0, 1.0]) - - rdtest.log.success("Picked values are as expected") \ No newline at end of file + # Should be a green triangle in the centre of the screen on a red background + self.check_triangle(back=[1.0, 0.0, 0.0, 1.0]) \ No newline at end of file diff --git a/util/test/tests/D3D12/D3D12_Overlay_Test.py b/util/test/tests/D3D12/D3D12_Overlay_Test.py index 4a32df050..0ef3c05f3 100644 --- a/util/test/tests/D3D12/D3D12_Overlay_Test.py +++ b/util/test/tests/D3D12/D3D12_Overlay_Test.py @@ -35,8 +35,6 @@ class D3D12_Overlay_Test(rdtest.TestCase): rdtest.log.success("Reference and output image are identical for {}".format(test_name)) def check_capture(self): - self.check_final_backbuffer() - out: rd.ReplayOutput = self.controller.CreateOutput(rd.CreateHeadlessWindowingData(100, 100), rd.ReplayOutputType.Texture) self.check(out is not None) @@ -50,6 +48,34 @@ class D3D12_Overlay_Test(rdtest.TestCase): tex = rd.TextureDisplay() tex.resourceId = pipe.GetOutputTargets()[0].resourceId + # Check the actual output is as expected first. + + # Background around the outside + self.check_pixel_value(tex.resourceId, 0.1, 0.1, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex.resourceId, 0.8, 0.1, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex.resourceId, 0.5, 0.95, [0.2, 0.2, 0.2, 1.0]) + + # Large dark grey triangle + self.check_pixel_value(tex.resourceId, 0.5, 0.1, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.5, 0.9, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.2, 0.9, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.8, 0.9, [0.1, 0.1, 0.1, 1.0]) + + # Red upper half triangle + self.check_pixel_value(tex.resourceId, 0.3, 0.4, [1.0, 0.0, 0.0, 1.0]) + # Blue lower half triangle + self.check_pixel_value(tex.resourceId, 0.3, 0.6, [0.0, 0.0, 1.0, 1.0]) + + # Floating clipped triangle + self.check_pixel_value(tex.resourceId, 335, 140, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex.resourceId, 340, 140, [0.2, 0.2, 0.2, 1.0]) + + # Triangle size triangles + self.check_pixel_value(tex.resourceId, 200, 51, [1.0, 0.5, 1.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 65, [1.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 79, [0.0, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 93, [0.0, 1.0, 0.0, 1.0]) + for overlay in rd.DebugOverlay: if overlay == rd.DebugOverlay.NoOverlay: continue @@ -71,6 +97,7 @@ class D3D12_Overlay_Test(rdtest.TestCase): save_data = rd.TextureSave() save_data.resourceId = out.GetDebugOverlayTexID() save_data.destType = rd.FileType.PNG + save_data.typeCast = rd.CompType.Typeless save_data.comp.blackPoint = 0.0 save_data.comp.whitePoint = 1.0 @@ -85,6 +112,7 @@ class D3D12_Overlay_Test(rdtest.TestCase): # These overlays modify the underlying texture, so we need to save it out instead of the overlay if overlay == rd.DebugOverlay.ClearBeforeDraw or overlay == rd.DebugOverlay.ClearBeforePass: save_data.resourceId = tex.resourceId + save_data.typeCast = rd.CompType.UNormSRGB self.controller.SaveTexture(save_data, overlay_path) diff --git a/util/test/tests/D3D12/D3D12_Resource_Lifetimes.py b/util/test/tests/D3D12/D3D12_Resource_Lifetimes.py index dba07d4ff..89f0ff45e 100644 --- a/util/test/tests/D3D12/D3D12_Resource_Lifetimes.py +++ b/util/test/tests/D3D12/D3D12_Resource_Lifetimes.py @@ -7,7 +7,50 @@ class D3D12_Resource_Lifetimes(rdtest.TestCase): demos_frame_cap = 200 def check_capture(self): - self.check_final_backbuffer() + last_draw: rd.DrawcallDescription = self.get_last_draw() + + self.controller.SetFrameEvent(last_draw.eventId, True) + + tex = last_draw.copyDestination + + # green background around first triangle, blue around second + self.check_pixel_value(tex, 10, 10, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 118, 10, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 118, 118, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 10, 118, [0.0, 1.0, 0.0, 1.0]) + + self.check_pixel_value(tex, 138, 10, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 246, 10, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 246, 118, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 138, 118, [0.0, 0.0, 1.0, 1.0]) + + # Sample across each triangle, we expect things to be identical + for xoffs in [0, 128]: + # Check black checkerboard squares + self.check_pixel_value(tex, xoffs+42, 92, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+40, 85, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+68, 66, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+59, 47, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+81, 92, [0.0, 0.0, 0.0, 1.0]) + + # Check the red and green eyes of the smiley + self.check_pixel_value(tex, xoffs+49, 83, [1.0, 0.0, 0.09, 1.0]) + self.check_pixel_value(tex, xoffs+60, 83, [0.0, 1.0, 0.09, 1.0]) + + # Check the blue smile + self.check_pixel_value(tex, xoffs+64, 72, [0.09, 0.0, 1.0, 1.0]) + + # Check the orange face + self.check_pixel_value(tex, xoffs+46, 86, [1.0, 0.55, 0.36, 1.0]) + + # Check the empty space where we clamped and didn't repeat + self.check_pixel_value(tex, xoffs+82, 79, [0.72, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex, xoffs+84, 86, [0.72, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex, xoffs+88, 92, [0.72, 1.0, 1.0, 1.0]) + + # Check that the repeated smiley above is there + self.check_pixel_value(tex, xoffs+67, 53, [0.91, 0.636, 0.36, 1.0]) + self.check_pixel_value(tex, xoffs+65, 50, [1.0, 0.0, 0.09, 1.0]) # Check for resource leaks if len(self.controller.GetResources()) > 75: diff --git a/util/test/tests/D3D12/D3D12_Shader_Editing.py b/util/test/tests/D3D12/D3D12_Shader_Editing.py index 1c20acf5d..bab2c430e 100644 --- a/util/test/tests/D3D12/D3D12_Shader_Editing.py +++ b/util/test/tests/D3D12/D3D12_Shader_Editing.py @@ -112,8 +112,8 @@ class D3D12_Shader_Editing(rdtest.TestCase): self.controller.SetFrameEvent(eid, True) # Original sample positions are now the clear color - self.check_pixel_value(tex, 0.25, 0.5, [0.4, 0.5, 0.6, 1.0]) - self.check_pixel_value(tex, 0.75, 0.5, [0.4, 0.5, 0.6, 1.0]) + self.check_pixel_value(tex, 0.25, 0.5, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex, 0.75, 0.5, [0.2, 0.2, 0.2, 1.0]) # Triangles have green and blue channel self.check_pixel_value(tex, 0.45, 0.05, [0.0, 1.0, 1.0, 1.0]) @@ -126,8 +126,8 @@ class D3D12_Shader_Editing(rdtest.TestCase): self.controller.SetFrameEvent(eid, True) # Original sample positions are still the clear color - self.check_pixel_value(tex, 0.25, 0.5, [0.4, 0.5, 0.6, 1.0]) - self.check_pixel_value(tex, 0.75, 0.5, [0.4, 0.5, 0.6, 1.0]) + self.check_pixel_value(tex, 0.25, 0.5, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex, 0.75, 0.5, [0.2, 0.2, 0.2, 1.0]) # The right triangle is the edited colour, the other two have reverted to green channel only self.check_pixel_value(tex, 0.45, 0.05, [0.0, 1.0, 0.0, 1.0]) diff --git a/util/test/tests/D3D12/D3D12_Simple_Triangle.py b/util/test/tests/D3D12/D3D12_Simple_Triangle.py index 3f520ba04..85d8d5869 100644 --- a/util/test/tests/D3D12/D3D12_Simple_Triangle.py +++ b/util/test/tests/D3D12/D3D12_Simple_Triangle.py @@ -6,7 +6,11 @@ class D3D12_Simple_Triangle(rdtest.TestCase): demos_test_name = 'D3D12_Simple_Triangle' def check_capture(self): - self.check_final_backbuffer() + last_draw: rd.DrawcallDescription = self.get_last_draw() + + self.controller.SetFrameEvent(last_draw.eventId, True) + + self.check_triangle(out=last_draw.copyDestination) self.check_export(self.capture_filename) @@ -21,7 +25,7 @@ class D3D12_Simple_Triangle(rdtest.TestCase): 'vtx': 0, 'idx': 0, 'SV_POSITION': [-0.5, -0.5, 0.0, 1.0], - 'COLOR': [1.0, 0.0, 0.0, 1.0], + 'COLOR': [0.0, 1.0, 0.0, 1.0], 'TEXCOORD': [0.0, 0.0], }, 1: { @@ -35,7 +39,7 @@ class D3D12_Simple_Triangle(rdtest.TestCase): 'vtx': 2, 'idx': 2, 'SV_POSITION': [0.5, -0.5, 0.0, 1.0], - 'COLOR': [0.0, 0.0, 1.0, 1.0], + 'COLOR': [0.0, 1.0, 0.0, 1.0], 'TEXCOORD': [1.0, 0.0], }, } diff --git a/util/test/tests/GL/GL_DX_Interop.py b/util/test/tests/GL/GL_DX_Interop.py index 8331eb61b..8496e2615 100644 --- a/util/test/tests/GL/GL_DX_Interop.py +++ b/util/test/tests/GL/GL_DX_Interop.py @@ -1,10 +1,35 @@ +import renderdoc as rd import rdtest class GL_DX_Interop(rdtest.TestCase): demos_test_name = 'GL_DX_Interop' - demos_frame_cap = 7 + demos_frame_cap = 4 def check_capture(self): - self.check_final_backbuffer() + last_draw: rd.DrawcallDescription = self.get_last_draw() + self.controller.SetFrameEvent(last_draw.eventId, True) + + out = last_draw.copyDestination + + # There should be N+1 rings of green/red with the base colour in the middle + x,y = 1.0, 1.0 + for ring in range(self.demos_frame_cap+1): + self.check_pixel_value(out, (0.5 - 0.5 * x) + 0.01, (0.5 - 0.5 * y) + 0.01, [1.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(out, (0.5 - 0.5 * x) + 0.01, (0.5 + 0.5 * y) - 0.01, [1.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(out, (0.5 + 0.5 * x) - 0.01, (0.5 - 0.5 * y) + 0.01, [1.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(out, (0.5 + 0.5 * x) - 0.01, (0.5 + 0.5 * y) - 0.01, [1.0, 0.0, 0.0, 1.0]) + + x *= 0.8 + y *= 0.8 + + self.check_pixel_value(out, (0.5 - 0.5 * x) + 0.01, (0.5 - 0.5 * y) + 0.01, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(out, (0.5 - 0.5 * x) + 0.01, (0.5 + 0.5 * y) - 0.01, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(out, (0.5 + 0.5 * x) - 0.01, (0.5 - 0.5 * y) + 0.01, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(out, (0.5 + 0.5 * x) - 0.01, (0.5 + 0.5 * y) - 0.01, [0.0, 1.0, 0.0, 1.0]) + + x *= 0.8 + y *= 0.8 + + self.check_pixel_value(out, 0.5, 0.5, [0.2, 0.2, 0.2, 1.0]) diff --git a/util/test/tests/GL/GL_Overlay_Test.py b/util/test/tests/GL/GL_Overlay_Test.py index f82174510..de3582877 100644 --- a/util/test/tests/GL/GL_Overlay_Test.py +++ b/util/test/tests/GL/GL_Overlay_Test.py @@ -35,8 +35,6 @@ class GL_Overlay_Test(rdtest.TestCase): rdtest.log.success("Reference and output image are identical for {}".format(test_name)) def check_capture(self): - self.check_final_backbuffer() - out: rd.ReplayOutput = self.controller.CreateOutput(rd.CreateHeadlessWindowingData(100, 100), rd.ReplayOutputType.Texture) self.check(out is not None) @@ -50,6 +48,34 @@ class GL_Overlay_Test(rdtest.TestCase): tex = rd.TextureDisplay() tex.resourceId = pipe.GetOutputTargets()[0].resourceId + # Check the actual output is as expected first. + + # Background around the outside + self.check_pixel_value(tex.resourceId, 0.1, 0.1, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex.resourceId, 0.8, 0.1, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex.resourceId, 0.5, 0.95, [0.2, 0.2, 0.2, 1.0]) + + # Large dark grey triangle + self.check_pixel_value(tex.resourceId, 0.5, 0.1, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.5, 0.9, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.2, 0.9, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.8, 0.9, [0.1, 0.1, 0.1, 1.0]) + + # Red upper half triangle + self.check_pixel_value(tex.resourceId, 0.3, 0.4, [1.0, 0.0, 0.0, 1.0]) + # Blue lower half triangle + self.check_pixel_value(tex.resourceId, 0.3, 0.6, [0.0, 0.0, 1.0, 1.0]) + + # Floating clipped triangle + self.check_pixel_value(tex.resourceId, 335, 140, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex.resourceId, 340, 140, [0.2, 0.2, 0.2, 1.0]) + + # Triangle size triangles + self.check_pixel_value(tex.resourceId, 200, 51, [1.0, 0.5, 1.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 65, [1.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 79, [0.0, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 93, [0.0, 1.0, 0.0, 1.0]) + for overlay in rd.DebugOverlay: if overlay == rd.DebugOverlay.NoOverlay: continue diff --git a/util/test/tests/GL/GL_Parameter_Zoo.py b/util/test/tests/GL/GL_Parameter_Zoo.py index f60d4e301..e3333a4f8 100644 --- a/util/test/tests/GL/GL_Parameter_Zoo.py +++ b/util/test/tests/GL/GL_Parameter_Zoo.py @@ -60,7 +60,7 @@ class GL_Parameter_Zoo(rdtest.TestCase): 'vtx': 0, 'idx': 0, 'gl_Position': [-0.5, -0.5, 0.0, 1.0], - 'v2fcol': [1.0, 0.0, 0.0, 1.0], + 'v2fcol': [0.0, 1.0, 0.0, 1.0], }, 1: { 'vtx': 1, @@ -72,7 +72,7 @@ class GL_Parameter_Zoo(rdtest.TestCase): 'vtx': 2, 'idx': 2, 'gl_Position': [0.5, -0.5, 0.0, 1.0], - 'v2fcol': [0.0, 0.0, 1.0, 1.0], + 'v2fcol': [0.0, 1.0, 0.0, 1.0], }, } diff --git a/util/test/tests/GL/GL_Resource_Lifetimes.py b/util/test/tests/GL/GL_Resource_Lifetimes.py index d7a702cfe..6d00d54b0 100644 --- a/util/test/tests/GL/GL_Resource_Lifetimes.py +++ b/util/test/tests/GL/GL_Resource_Lifetimes.py @@ -7,7 +7,50 @@ class GL_Resource_Lifetimes(rdtest.TestCase): demos_frame_cap = 200 def check_capture(self): - self.check_final_backbuffer() + last_draw: rd.DrawcallDescription = self.get_last_draw() + + self.controller.SetFrameEvent(last_draw.eventId, True) + + tex = last_draw.copyDestination + + # green background around first triangle, blue around second + self.check_pixel_value(tex, 10, 10, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 118, 10, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 118, 118, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 10, 118, [0.0, 1.0, 0.0, 1.0]) + + self.check_pixel_value(tex, 138, 10, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 246, 10, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 246, 118, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 138, 118, [0.0, 0.0, 1.0, 1.0]) + + # Sample across each triangle, we expect things to be identical + for xoffs in [0, 128]: + # Check black checkerboard squares + self.check_pixel_value(tex, xoffs+42, 92, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+40, 85, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+68, 66, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+59, 47, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+81, 92, [0.0, 0.0, 0.0, 1.0]) + + # Check the red and green eyes of the smiley + self.check_pixel_value(tex, xoffs+49, 83, [1.0, 0.0, 0.09, 1.0]) + self.check_pixel_value(tex, xoffs+60, 83, [0.0, 1.0, 0.09, 1.0]) + + # Check the blue smile + self.check_pixel_value(tex, xoffs+64, 72, [0.09, 0.0, 1.0, 1.0]) + + # Check the orange face + self.check_pixel_value(tex, xoffs+46, 86, [1.0, 0.55, 0.36, 1.0]) + + # Check the empty space where we clamped and didn't repeat + self.check_pixel_value(tex, xoffs+82, 79, [0.72, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex, xoffs+84, 86, [0.72, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex, xoffs+88, 92, [0.72, 1.0, 1.0, 1.0]) + + # Check that the repeated smiley above is there + self.check_pixel_value(tex, xoffs+67, 53, [0.91, 0.636, 0.36, 1.0]) + self.check_pixel_value(tex, xoffs+65, 50, [1.0, 0.0, 0.09, 1.0]) # Check for resource leaks if len(self.controller.GetResources()) > 75: diff --git a/util/test/tests/GL/GL_Separable_Geometry_Shaders.py b/util/test/tests/GL/GL_Separable_Geometry_Shaders.py index 189849cb0..6b8f08a53 100644 --- a/util/test/tests/GL/GL_Separable_Geometry_Shaders.py +++ b/util/test/tests/GL/GL_Separable_Geometry_Shaders.py @@ -17,7 +17,7 @@ class GL_Separable_Geometry_Shaders(rdtest.TestCase): 'vtx': 0, 'idx': 0, 'gl_Position': [-0.5, -0.5, 0.0, 1.0], - 'v2f_block.col': [1.0, 0.0, 0.0, 1.0], + 'v2f_block.col': [0.0, 1.0, 0.0, 1.0], 'v2f_block.uv': [0.0, 0.0, 0.0, 1.0], }, 1: { @@ -31,7 +31,7 @@ class GL_Separable_Geometry_Shaders(rdtest.TestCase): 'vtx': 2, 'idx': 2, 'gl_Position': [0.5, -0.5, 0.0, 1.0], - 'v2f_block.col': [0.0, 0.0, 1.0, 1.0], + 'v2f_block.col': [0.0, 1.0, 0.0, 1.0], 'v2f_block.uv': [1.0, 0.0, 0.0, 1.0], }, } @@ -45,7 +45,7 @@ class GL_Separable_Geometry_Shaders(rdtest.TestCase): 'vtx': 0, 'idx': 0, 'gl_Position': [0.2, -0.5, 0.0, 1.0], - 'v2f_block.col': [1.0, 0.0, 0.0, 1.0], + 'v2f_block.col': [0.0, 1.0, 0.0, 1.0], 'v2f_block.uv': [0.0, 0.0, 0.0, 1.0], }, 1: { @@ -66,16 +66,23 @@ class GL_Separable_Geometry_Shaders(rdtest.TestCase): 'vtx': 5, 'idx': 5, 'gl_Position': [-0.2, -0.5, 0.0, 1.0], - 'v2f_block.col': [1.0, 1.0, 0.0, 0.0], + 'v2f_block.col': [1.0, 0.0, 1.0, 0.0], 'v2f_block.uv': [1.0, 0.0, 0.0, 1.0], }, 8: { 'vtx': 8, 'idx': 8, 'gl_Position': [0.5, 0.2, 0.0, 1.0], - 'v2f_block.col': [0.0, 1.0, 0.0, 1.0], + 'v2f_block.col': [1.0, 0.0, 0.0, 1.0], 'v2f_block.uv': [1.0, 0.0, 0.0, 1.0], }, } self.check_mesh_data(postgs_ref, postgs_data) + + pipe: rd.PipeState = self.controller.GetPipelineState() + + out = pipe.GetOutputTargets()[0].resourceId + self.check_pixel_value(out, 0.5, 0.1, [1.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(out, 0.75, 0.5, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(out, 0.25, 0.5, [1.0, 0.0, 1.0, 0.0]) diff --git a/util/test/tests/GL/GL_Shader_Editing.py b/util/test/tests/GL/GL_Shader_Editing.py index 7461f31be..79f537128 100644 --- a/util/test/tests/GL/GL_Shader_Editing.py +++ b/util/test/tests/GL/GL_Shader_Editing.py @@ -144,9 +144,9 @@ class GL_Shader_Editing(rdtest.TestCase): self.controller.SetFrameEvent(self.get_last_draw().eventId, True) # Original sample positions are now the clear color - self.check_pixel_value(tex, 0.25, 0.25, [0.4, 0.5, 0.6, 1.0]) - self.check_pixel_value(tex, 0.75, 0.25, [0.4, 0.5, 0.6, 1.0]) - self.check_pixel_value(tex, 0.25, 0.75, [0.4, 0.5, 0.6, 1.0]) + self.check_pixel_value(tex, 0.25, 0.25, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex, 0.75, 0.25, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex, 0.25, 0.75, [0.2, 0.2, 0.2, 1.0]) # The triangles are still the same colour but up and to the right self.check_pixel_value(tex, 0.45, 0.05, [0.0, 1.0, 1.0, 1.0]) @@ -160,9 +160,9 @@ class GL_Shader_Editing(rdtest.TestCase): self.controller.SetFrameEvent(self.get_last_draw().eventId, True) # Original sample positions are still the clear color - self.check_pixel_value(tex, 0.25, 0.25, [0.4, 0.5, 0.6, 1.0]) - self.check_pixel_value(tex, 0.75, 0.25, [0.4, 0.5, 0.6, 1.0]) - self.check_pixel_value(tex, 0.25, 0.75, [0.4, 0.5, 0.6, 1.0]) + self.check_pixel_value(tex, 0.25, 0.25, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex, 0.75, 0.25, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex, 0.25, 0.75, [0.2, 0.2, 0.2, 1.0]) # The lower triangle is the edited colour, the other two have reverted to green channel only self.check_pixel_value(tex, 0.45, 0.05, [0.0, 1.0, 0.0, 1.0]) @@ -210,14 +210,14 @@ class GL_Shader_Editing(rdtest.TestCase): self.controller.SetFrameEvent(self.get_last_draw().eventId, True) # Now it should be green-blue and offset - self.check_pixel_value(tex, 0.75, 0.75, [0.4, 0.5, 0.6, 1.0]) + self.check_pixel_value(tex, 0.75, 0.75, [0.2, 0.2, 0.2, 1.0]) self.check_pixel_value(tex, 0.95, 0.55, [0.0, 1.0, 1.0, 1.0]) self.controller.RemoveReplacement(fsseprefl.resourceId) self.controller.SetFrameEvent(self.get_last_draw().eventId, True) # Now it should be back to green and offset - self.check_pixel_value(tex, 0.75, 0.75, [0.4, 0.5, 0.6, 1.0]) + self.check_pixel_value(tex, 0.75, 0.75, [0.2, 0.2, 0.2, 1.0]) self.check_pixel_value(tex, 0.95, 0.55, [0.0, 1.0, 0.0, 1.0]) self.controller.RemoveReplacement(vsseprefl.resourceId) diff --git a/util/test/tests/GL/GL_Simple_Triangle.py b/util/test/tests/GL/GL_Simple_Triangle.py index c0a3af817..24cf9f6ed 100644 --- a/util/test/tests/GL/GL_Simple_Triangle.py +++ b/util/test/tests/GL/GL_Simple_Triangle.py @@ -6,7 +6,11 @@ class GL_Simple_Triangle(rdtest.TestCase): demos_test_name = 'GL_Simple_Triangle' def check_capture(self): - self.check_final_backbuffer() + last_draw: rd.DrawcallDescription = self.get_last_draw() + + self.controller.SetFrameEvent(last_draw.eventId, True) + + self.check_triangle(out=last_draw.copyDestination) self.check_export(self.capture_filename) @@ -22,7 +26,7 @@ class GL_Simple_Triangle(rdtest.TestCase): 'idx': 0, 'gl_Position': [-0.5, -0.5, 0.0, 1.0], 'v2f_block.pos': [-0.5, -0.5, 0.0, 1.0], - 'v2f_block.col': [1.0, 0.0, 0.0, 1.0], + 'v2f_block.col': [0.0, 1.0, 0.0, 1.0], 'v2f_block.uv': [0.0, 0.0, 0.0, 1.0], }, 1: { @@ -38,7 +42,7 @@ class GL_Simple_Triangle(rdtest.TestCase): 'idx': 2, 'gl_Position': [0.5, -0.5, 0.0, 1.0], 'v2f_block.pos': [0.5, -0.5, 0.0, 1.0], - 'v2f_block.col': [0.0, 0.0, 1.0, 1.0], + 'v2f_block.col': [0.0, 1.0, 0.0, 1.0], 'v2f_block.uv': [1.0, 0.0, 0.0, 1.0], }, } diff --git a/util/test/tests/GL/GL_VAO_0.py b/util/test/tests/GL/GL_VAO_0.py index e4ea2f2d1..654607c99 100644 --- a/util/test/tests/GL/GL_VAO_0.py +++ b/util/test/tests/GL/GL_VAO_0.py @@ -6,8 +6,6 @@ class GL_VAO_0(rdtest.TestCase): demos_test_name = 'GL_VAO_0' def check_capture(self): - self.check_final_backbuffer() - draw = self.find_draw("Draw") # There are 4 draws with variations on client-memory VBs or IBs @@ -16,6 +14,11 @@ class GL_VAO_0(rdtest.TestCase): self.controller.SetFrameEvent(draw.eventId, False) + pipe: rd.PipeState = self.controller.GetPipelineState() + vp: rd.Viewport = pipe.GetViewport(0) + + self.check_triangle(vp=(vp.x, vp.y, vp.width, vp.height)) + postvs_data = self.get_postvs(rd.MeshDataStage.VSOut, 0, draw.numIndices) postvs_ref = { @@ -24,7 +27,7 @@ class GL_VAO_0(rdtest.TestCase): 'idx': 0, 'gl_Position': [-0.5, -0.5, 0.0, 1.0], 'v2f_block.pos': [-0.5, -0.5, 0.0, 1.0], - 'v2f_block.col': [1.0, 0.0, 0.0, 1.0], + 'v2f_block.col': [0.0, 1.0, 0.0, 1.0], 'v2f_block.uv': [0.0, 0.0, 0.0, 1.0], }, 1: { @@ -40,7 +43,7 @@ class GL_VAO_0(rdtest.TestCase): 'idx': 2, 'gl_Position': [0.5, -0.5, 0.0, 1.0], 'v2f_block.pos': [0.5, -0.5, 0.0, 1.0], - 'v2f_block.col': [0.0, 0.0, 1.0, 1.0], + 'v2f_block.col': [0.0, 1.0, 0.0, 1.0], 'v2f_block.uv': [1.0, 0.0, 0.0, 1.0], }, } diff --git a/util/test/tests/Vulkan/VK_Indirect.py b/util/test/tests/Vulkan/VK_Indirect.py index eab892ee2..bc8139a45 100644 --- a/util/test/tests/Vulkan/VK_Indirect.py +++ b/util/test/tests/Vulkan/VK_Indirect.py @@ -28,8 +28,6 @@ class VK_Indirect(rdtest.TestCase): self.overlay_idx = self.overlay_idx + 1 def check_capture(self): - self.check_final_backbuffer() - self.overlay_idx = 1 fill = self.find_draw("vkCmdFillBuffer") @@ -47,6 +45,27 @@ class VK_Indirect(rdtest.TestCase): for level in ["Primary", "Secondary"]: rdtest.log.print("Checking {} indirect calls".format(level)) + final = self.find_draw("{}: Final".format(level)) + + indirect_count_root = self.find_draw("{}: KHR_draw_indirect_count".format(level)) + + self.controller.SetFrameEvent(final.eventId, False) + + tex = self.controller.GetPipelineState().GetOutputTargets()[0].resourceId + + # Check the top row, non indirect count and always present + self.check_pixel_value(tex, 60, 60, [1.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, 100, 60, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 145, 35, [1.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 205, 35, [0.0, 1.0, 1.0, 1.0]) + + # if present, check bottom row of indirect count + if indirect_count_root is not None: + self.check_pixel_value(tex, 60, 220, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 100, 220, [1.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 145, 185, [0.5, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 205, 185, [0.5, 0.0, 1.0, 1.0]) + dispatches = self.find_draw("{}: Dispatches".format(level)) # Set up a ReplayOutput and TextureSave for quickly testing the drawcall highlight overlay @@ -209,8 +228,6 @@ class VK_Indirect(rdtest.TestCase): rdtest.log.success("{} {} is as expected".format(level, draw.name)) - indirect_count_root = self.find_draw("{}: KHR_draw_indirect_count".format(level)) - if indirect_count_root is not None: self.check(indirect_count_root.children[0].name == '{}: Empty count draws'.format(level)) self.check(indirect_count_root.children[1].name == '{}: Indirect count draws'.format(level)) diff --git a/util/test/tests/Vulkan/VK_Int8_IBuffer.py b/util/test/tests/Vulkan/VK_Int8_IBuffer.py index 818e1973b..905057be0 100644 --- a/util/test/tests/Vulkan/VK_Int8_IBuffer.py +++ b/util/test/tests/Vulkan/VK_Int8_IBuffer.py @@ -6,8 +6,6 @@ class VK_Int8_IBuffer(rdtest.TestCase): demos_test_name = 'VK_Int8_IBuffer' def check_capture(self): - self.check_final_backbuffer() - draw = self.find_draw("Draw") self.check(draw is not None) @@ -27,7 +25,7 @@ class VK_Int8_IBuffer(rdtest.TestCase): 'vtx': 0, 'idx': 0, 'gl_PerVertex.gl_Position': [-0.8, -0.2, 0.0, 1.0], - 'vertOut.col': [1.0, 0.0, 0.0, 1.0], + 'vertOut.col': [0.0, 1.0, 0.0, 1.0], 'vertOut.uv': [0.0, 0.0, 0.0, 1.0], }, 4: { @@ -44,9 +42,22 @@ class VK_Int8_IBuffer(rdtest.TestCase): 'vtx': 9, 'idx': 8, 'gl_PerVertex.gl_Position': [-0.8, 0.7, 0.0, 1.0], - 'vertOut.col': [1.0, 0.0, 0.0, 1.0], + 'vertOut.col': [0.0, 0.0, 1.0, 1.0], 'vertOut.uv': [0.0, 0.0, 0.0, 1.0], }, } self.check_mesh_data(postvs_ref, postvs_data) + + # Check that the rendered mesh is as expected + out = pipe.GetOutputTargets()[0].resourceId + for x in [x*0.01 for x in range(1, 100)]: + self.check_pixel_value(out, x, 0.1, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(out, x, 0.5, [0.2, 0.2, 0.2, 1.0]) + + self.check_pixel_value(out, 0.3, 0.25, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(out, 0.5, 0.25, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(out, 0.7, 0.25, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(out, 0.3, 0.75, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(out, 0.5, 0.75, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(out, 0.7, 0.75, [0.0, 0.0, 1.0, 1.0]) diff --git a/util/test/tests/Vulkan/VK_Overlay_Test.py b/util/test/tests/Vulkan/VK_Overlay_Test.py index 0bf1bc3c2..6a6a7a966 100644 --- a/util/test/tests/Vulkan/VK_Overlay_Test.py +++ b/util/test/tests/Vulkan/VK_Overlay_Test.py @@ -35,8 +35,6 @@ class VK_Overlay_Test(rdtest.TestCase): rdtest.log.success("Reference and output image are identical for {}".format(test_name)) def check_capture(self): - self.check_final_backbuffer() - out: rd.ReplayOutput = self.controller.CreateOutput(rd.CreateHeadlessWindowingData(100, 100), rd.ReplayOutputType.Texture) self.check(out is not None) @@ -50,6 +48,34 @@ class VK_Overlay_Test(rdtest.TestCase): tex = rd.TextureDisplay() tex.resourceId = pipe.GetOutputTargets()[0].resourceId + # Check the actual output is as expected first. + + # Background around the outside + self.check_pixel_value(tex.resourceId, 0.1, 0.1, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex.resourceId, 0.8, 0.1, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex.resourceId, 0.5, 0.95, [0.2, 0.2, 0.2, 1.0]) + + # Large dark grey triangle + self.check_pixel_value(tex.resourceId, 0.5, 0.1, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.5, 0.9, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.2, 0.9, [0.1, 0.1, 0.1, 1.0]) + self.check_pixel_value(tex.resourceId, 0.8, 0.9, [0.1, 0.1, 0.1, 1.0]) + + # Red upper half triangle + self.check_pixel_value(tex.resourceId, 0.3, 0.4, [1.0, 0.0, 0.0, 1.0]) + # Blue lower half triangle + self.check_pixel_value(tex.resourceId, 0.3, 0.6, [0.0, 0.0, 1.0, 1.0]) + + # Floating clipped triangle + self.check_pixel_value(tex.resourceId, 335, 140, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex.resourceId, 340, 140, [0.2, 0.2, 0.2, 1.0]) + + # Triangle size triangles + self.check_pixel_value(tex.resourceId, 200, 51, [1.0, 0.5, 1.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 65, [1.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 79, [0.0, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex.resourceId, 200, 93, [0.0, 1.0, 0.0, 1.0]) + for overlay in rd.DebugOverlay: if overlay == rd.DebugOverlay.NoOverlay: continue diff --git a/util/test/tests/Vulkan/VK_Resource_Lifetimes.py b/util/test/tests/Vulkan/VK_Resource_Lifetimes.py index ebcba2e46..e2806127d 100644 --- a/util/test/tests/Vulkan/VK_Resource_Lifetimes.py +++ b/util/test/tests/Vulkan/VK_Resource_Lifetimes.py @@ -7,7 +7,50 @@ class VK_Resource_Lifetimes(rdtest.TestCase): demos_frame_cap = 200 def check_capture(self): - self.check_final_backbuffer() + last_draw: rd.DrawcallDescription = self.get_last_draw() + + self.controller.SetFrameEvent(last_draw.eventId, True) + + tex = last_draw.copyDestination + + # green background around first triangle, blue around second + self.check_pixel_value(tex, 10, 10, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 118, 10, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 118, 118, [0.0, 1.0, 0.0, 1.0]) + self.check_pixel_value(tex, 10, 118, [0.0, 1.0, 0.0, 1.0]) + + self.check_pixel_value(tex, 138, 10, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 246, 10, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 246, 118, [0.0, 0.0, 1.0, 1.0]) + self.check_pixel_value(tex, 138, 118, [0.0, 0.0, 1.0, 1.0]) + + # Sample across each triangle, we expect things to be identical + for xoffs in [0, 128]: + # Check black checkerboard squares + self.check_pixel_value(tex, xoffs+42, 92, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+40, 85, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+68, 66, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+59, 47, [0.0, 0.0, 0.0, 1.0]) + self.check_pixel_value(tex, xoffs+81, 92, [0.0, 0.0, 0.0, 1.0]) + + # Check the red and green eyes of the smiley + self.check_pixel_value(tex, xoffs+49, 83, [1.0, 0.0, 0.09, 1.0]) + self.check_pixel_value(tex, xoffs+60, 83, [0.0, 1.0, 0.09, 1.0]) + + # Check the blue smile + self.check_pixel_value(tex, xoffs+64, 72, [0.09, 0.0, 1.0, 1.0]) + + # Check the orange face + self.check_pixel_value(tex, xoffs+46, 86, [1.0, 0.55, 0.36, 1.0]) + + # Check the empty space where we clamped and didn't repeat + self.check_pixel_value(tex, xoffs+82, 79, [0.72, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex, xoffs+84, 86, [0.72, 1.0, 1.0, 1.0]) + self.check_pixel_value(tex, xoffs+88, 92, [0.72, 1.0, 1.0, 1.0]) + + # Check that the repeated smiley above is there + self.check_pixel_value(tex, xoffs+67, 53, [0.91, 0.636, 0.36, 1.0]) + self.check_pixel_value(tex, xoffs+65, 50, [1.0, 0.0, 0.09, 1.0]) # Check for resource leaks if len(self.controller.GetResources()) > 75: diff --git a/util/test/tests/Vulkan/VK_Secondary_CmdBuf.py b/util/test/tests/Vulkan/VK_Secondary_CmdBuf.py index 8c490fac8..410d56043 100644 --- a/util/test/tests/Vulkan/VK_Secondary_CmdBuf.py +++ b/util/test/tests/Vulkan/VK_Secondary_CmdBuf.py @@ -6,7 +6,17 @@ class VK_Secondary_CmdBuf(rdtest.TestCase): demos_test_name = 'VK_Secondary_CmdBuf' def check_capture(self): - self.check_final_backbuffer() + last_draw: rd.DrawcallDescription = self.get_last_draw() + + self.controller.SetFrameEvent(last_draw.eventId, True) + + tex = self.get_texture(last_draw.copyDestination) + + # Green triangle on the left, blue on the right + self.check_triangle(out=last_draw.copyDestination, fore=[0.0, 1.0, 0.0, 1.0], + vp=(0, 0, tex.width / 2, tex.height)) + self.check_triangle(out=last_draw.copyDestination, fore=[0.0, 0.0, 1.0, 1.0], + vp=(tex.width / 2, 0, tex.width/2, tex.height)) draw = self.find_draw("Primary") diff --git a/util/test/tests/Vulkan/VK_Shader_Editing.py b/util/test/tests/Vulkan/VK_Shader_Editing.py index be97179ab..5b85599ee 100644 --- a/util/test/tests/Vulkan/VK_Shader_Editing.py +++ b/util/test/tests/Vulkan/VK_Shader_Editing.py @@ -110,8 +110,8 @@ class VK_Shader_Editing(rdtest.TestCase): self.controller.SetFrameEvent(eid, True) # Original sample positions are now the clear color - self.check_pixel_value(tex, 0.25, 0.5, [0.4, 0.5, 0.6, 1.0]) - self.check_pixel_value(tex, 0.75, 0.5, [0.4, 0.5, 0.6, 1.0]) + self.check_pixel_value(tex, 0.25, 0.5, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex, 0.75, 0.5, [0.2, 0.2, 0.2, 1.0]) # Triangles have green and blue channel self.check_pixel_value(tex, 0.45, 0.95, [0.0, 1.0, 1.0, 1.0]) @@ -124,8 +124,8 @@ class VK_Shader_Editing(rdtest.TestCase): self.controller.SetFrameEvent(eid, True) # Original sample positions are still the clear color - self.check_pixel_value(tex, 0.25, 0.5, [0.4, 0.5, 0.6, 1.0]) - self.check_pixel_value(tex, 0.75, 0.5, [0.4, 0.5, 0.6, 1.0]) + self.check_pixel_value(tex, 0.25, 0.5, [0.2, 0.2, 0.2, 1.0]) + self.check_pixel_value(tex, 0.75, 0.5, [0.2, 0.2, 0.2, 1.0]) # The right triangle is the edited colour, the other two have reverted to green channel only self.check_pixel_value(tex, 0.45, 0.95, [0.0, 1.0, 0.0, 1.0]) diff --git a/util/test/tests/Vulkan/VK_Simple_Triangle.py b/util/test/tests/Vulkan/VK_Simple_Triangle.py index a3177d89b..dac5a199a 100644 --- a/util/test/tests/Vulkan/VK_Simple_Triangle.py +++ b/util/test/tests/Vulkan/VK_Simple_Triangle.py @@ -6,7 +6,11 @@ class VK_Simple_Triangle(rdtest.TestCase): demos_test_name = 'VK_Simple_Triangle' def check_capture(self): - self.check_final_backbuffer() + last_draw: rd.DrawcallDescription = self.get_last_draw() + + self.controller.SetFrameEvent(last_draw.eventId, True) + + self.check_triangle(out=last_draw.copyDestination) self.check_export(self.capture_filename) @@ -22,7 +26,7 @@ class VK_Simple_Triangle(rdtest.TestCase): 'idx': 0, 'gl_PerVertex.gl_Position': [-0.5, 0.5, 0.0, 1.0], 'vertOut.pos': [-0.5, 0.5, 0.0, 1.0], - 'vertOut.col': [1.0, 0.0, 0.0, 1.0], + 'vertOut.col': [0.0, 1.0, 0.0, 1.0], 'vertOut.uv': [0.0, 0.0, 0.0, 1.0], }, 1: { @@ -38,7 +42,7 @@ class VK_Simple_Triangle(rdtest.TestCase): 'idx': 2, 'gl_PerVertex.gl_Position': [0.5, 0.5, 0.0, 1.0], 'vertOut.pos': [0.5, 0.5, 0.0, 1.0], - 'vertOut.col': [0.0, 0.0, 1.0, 1.0], + 'vertOut.col': [0.0, 1.0, 0.0, 1.0], 'vertOut.uv': [1.0, 0.0, 0.0, 1.0], }, }