有没有人在CEF3(Chromium Embedded Framework)中成功实现NaCl/PNaCl支持?
我发现Chrome(34)可以很好地在这个页面上运行PNaCl样本,但是在cefbuilds.com(Windows,1916分支)上分发的cefclient却没有.
Chrome将ppGoogleNaClPluginChrome.dll列为chrome:// plugins上的PPAPI(进程内)插件,而cefclient应用程序未列出此插件(Test/Plugins菜单选项)
我已经删除了源代码,并没有看到libcef目标的任何NaCl依赖性,并且还看到针对CEF项目提交的这个问题,这让我怀疑这目前仅适用于Chromium/Chrome.
---更新---最近在这个问题上有相当多的活动,我怀疑部分归功于赏金,还因为Chrome/Chromium现在正在积极地弃用NPAPI.
如果您想鼓励CEF团队优先考虑添加NaCl/PNaCl支持的工作,请在此处投票支持该问题:http: //bitbucket.org/chromiumembedded/cef/issue/705#
我们有一个大型自动化集成测试套件的"问题".虽然我们的构建时间合理(<1小时),但测试通常需要6个小时才能完成.
虽然在我们的构建运行中测试这一大块功能很棒,但它显然是实现CI的障碍,我发现这对于将源树保持在"始终可构建"状态非常有帮助.
我已经回顾了像这样的讨论话题,详细阐述了区别.
这引出了几个问题:
CI是否规定或建议单元与集成测试自动化?我过去听说过Unit-only,但是我没有在快速搜索中找到任何这样的陈述(或理由).
组合构建+自动化测试时间/比率的良好"最佳实践"是什么,以便为团队提供有效的CI?我的直觉告诉我,这应该是<2小时作为最坏的情况,并且可能<1小时才真正有效.理论上,我们可以将测试分解为并行运行,并且可能让它们在2小时内运行,但这仍然是3小时运行.
从长期运行的Nightly Builds + Integration测试到CI,最好的方法是什么?我正在考虑仅使用一些骨架单元测试的CI构建,以及继续进行集成测试的夜间构建.
任何工具建议也是受欢迎的(仅限Windows的C#/ C++代码库)
continuous-integration integration-testing automated-tests unit-testing build
我有一个传统的Windows服务器服务和(衍生)应用程序在XP-64和W2K3中工作正常,但在W2K8上失败.我相信这是因为新的" Session 0隔离 "功能.
因此,我正在寻找代码示例/安全设置mojo,它允许您从Windows 2008 Server的Windows服务创建一个新进程,以便我可以恢复(并可能超过)以前的行为.我需要一个解决方案:
由于会话0不再是用户会话,因此在会话0中运行的服务无法访问视频驱动程序.这意味着服务渲染图形的任何尝试都会失败.查询会话0中的显示分辨率和颜色深度报告系统的正确结果,最高为1920x1200,每像素32位.
新进程获得一个可用于创建Windows DC的Windows工作站/桌面(例如winsta0/default).我在这里找到了一个解决方案(在交互式会话中启动OK):在C++中启动交互式客户端进程
当用作OpenGL DescribePixelFormat枚举的基础时,Windows DC 能够找到并使用硬件加速格式(在适当配备OpenGL硬件的系统上).请注意,我们当前的解决方案在XP-64和W2K3上运行正常,除非终端服务会话正在运行(VNC工作正常.)一个允许进程工作的解决方案(即使在终端服务会话打开时使用OpenGL硬件加速运行)也会很奇妙,尽管不是必需的.
我目前只停留在第1项,虽然有一些类似的帖子讨论这个(像这样,这个 - 它们不是合适的解决方案,因为无法保证用户会话已经登录"拿"了来自的会话ID,我也没有从LocalSystem帐户运行(我从服务的域帐户运行,我可以在合理范围内调整权限,尽管我更愿意不必将优先级升级到包括SeTcbPrivileges.)
例如 - 这是我认为应该工作的存根,但总是在SetTokenInformation调用上返回错误1314(即使AdjustTokenPrivileges没有返回任何错误)我也使用了一些涉及"LogonUser"的替代策略(而不是打开现有的进程令牌),但我似乎无法换出会话ID.
我也怀疑在所有情况下都使用WTSActiveConsoleSessionId(例如,如果没有交互式用户登录) - 尽管在没有登录会话的情况下运行的服务的快速测试似乎返回了合理的会话值(1).
我已经删除了错误处理以便于阅读(仍然有点凌乱 - 道歉)
//Also tried using LogonUser(..) here
OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY
| TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_SESSIONID
| TOKEN_ADJUST_DEFAULT | TOKEN_ASSIGN_PRIMARY
| TOKEN_DUPLICATE, &hToken)
GetTokenInformation( hToken, TokenSessionId, &logonSessionId, sizeof(DWORD), &dwTokenLength )
DWORD consoleSessionId = WTSGetActiveConsoleSessionId();
/* Can't use this - requires very elevated privileges (LOCAL only, SeTcbPrivileges as well)
if( !WTSQueryUserToken(consoleSessionId, …Run Code Online (Sandbox Code Playgroud) opengl windows-services createprocessasuser session-0-isolation windows-server-2008
我有一个C#应用程序,我编写了GDI +代码,使用Bitmap/TextureBrush渲染来呈现2D图像,可以应用各种图像处理功能.此代码是模拟现有DX9代码的应用程序中的新路径,它们共享一个公共库以执行所有向量和矩阵(例如ViewToWorld/WorldToView)操作.我的测试床由DX9输出图像组成,我将其与新GDI +代码的输出进行比较.
渲染到与Bitmap尺寸匹配的视口(即没有缩放或平移)的简单测试用例确实匹配像素完美(没有二进制差异) - 但是一旦图像被放大(放大),我就会得到非常小的差异在5-10%的像素中.差异的大小是1(偶尔2)/ 256.我怀疑这是由于插值差异造成的.
问题:对于DX9正射投影(和身份世界空间),相机垂直并以纹理四边形为中心,期望DirectX.Direct3D.TextureFilter.Linear生成相同的输出到GDI + TextureBrush填充矩形/多边形是合理的使用System.Drawing.Drawing2D.InterpolationMode.Bilinear设置?
对于这个(放大)情况,DX9代码正在使用它(MinFilter,MipFilter设置类似):
Device.SetSamplerState(0, SamplerStageStates.MagFilter, (int)TextureFilter.Linear);
并且GDI +路径正在使用:
g.InterpolationMode = InterpolationMode.Bilinear;
我认为"双线性插值"是一个相当具体的滤波器定义,但后来我注意到GDI +中还有另一种选择"HighQualityBilinear"(我尝试过,没有区别 - 考虑到"添加预滤波"的描述,这是有道理的缩小")
后续问题:期望DirectX和GDI +之间的像素完美输出匹配是否合理(假设传入的所有外部坐标相等)?如果没有,为什么不呢?
澄清:我正在使用的图像是使用Format32bppPArgb的不透明灰度(R = G = B,A = 1).
最后,我可以使用许多其他API(Direct2D,WPF,GDI等) - 这个问题通常适用于比较"等效"双线性插值输出图像的输出.谢谢!
我正在开发一个应用程序,它将在相应监视器上的对话框上显示从EDID块(监视器型号,ID,S/N等)派生的信息.
此代码适用于查找显示的EDID信息.它通过枚举HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY\[Monitor]\[PnPID]\Device Parameters\EDID下的DISPLAY键来提取EDID信息.
更新:上面的代码依赖于PnP使用注册表的"副作用".我现在使用SetupAPI枚举监视器,它正确处理连接/删除的监视器(与上面链接中的代码不同).
我试图将Windows.Forms.Screen.AllScreens [](\\.\ DISPLAY1,\\.\ DISPLAY2等)中的每个屏幕与上述注册表检查返回的条目相关联.
注意:在下面的代码块中,DisplayDetails.GetMonitorDetails()现已使用SetupAPI替换为更强大的注册表枚举代码,但返回的数据是相同的.
例如
private void Form1_Load(object sender, EventArgs e)
{
Console.WriteLine("Polling displays on {0}:", System.Environment.MachineName);
int i = 0;
foreach ( DisplayDetails dd in DisplayDetails.GetMonitorDetails())
{
Console.WriteLine( "Info: Model: {0}, MonitorID: {1}, PnPID: {2}, Serial#:{3}", dd.Model, dd.MonitorID, dd.PnPID, dd.SerialNumber );
Console.WriteLine( "Does this correlate to Screen: {0}?", Screen.AllScreens[i++].DeviceName );
}
}
Run Code Online (Sandbox Code Playgroud)
信息:型号:DELL P2411H,MonitorID:DELA06E,PnPID:5&2e2fefea&0&UID1078018,Serial#:F8NDP0C ... PU
这是否与Screen相关:\\.\ DISPLAY1?
信息:型号:DELL P2411H,MonitorID:DELA06E,PnPID:5&2e2fefea&0&UID1078019,Serial#:F8NDP0C ... AU
这与Screen相关:\\.\ DISPLAY2?
答:没有
在测试中,我发现它们没有可靠的关联(我有一个系统,其中枚举的第一个显示是\\.\ DISPLAY2). …
任何人都可以阐明如果GDI StretchBlt为工作站Win32 API函数执行用于缩放到双线性插值二者较大和较小的图像24位/ 32位彩色图像?如果没有,是否有一个GDI(而不是 GDI +)功能呢?
该SetStretchBltMode FN具有设置HALFTONE其如下记载:
HALFTONE 将源矩形中的像素映射到目标矩形中的像素块.目标像素块上的平均颜色近似于源像素的颜色.
我已经看过参考文献(参见第一个答案的后续内容),这会在缩小图像时执行双线性插值,但是在放大时没有明确的答案.
我注意到Windows Mobile CE SDK确实支持BILINEAR标志 - 这与HALFTONE注释完全相反(仅适用于扩展).
请注意,对于这个问题的范围,我对追求GDI +(有多种插值选项),OpenGL,DirectX等作为替代方案并不感兴趣,所以请不要为这些其他API或替代方案的后续工作而烦恼图像库.
我真正希望找到的是一些明确的MS/MSDN或其他高质量文档,它们清楚地记录了Win32(桌面)GDI行为的这种行为.
同时,我会尝试一些比较GDI和Direct2D的实验(它确实有一个明确的标志来控制它)并发布我的发现.
谢谢!
我已经能够使用以下C#代码创建Format48bppRgb .PNG文件(来自某些内部HDR数据):
Bitmap bmp16 = new Bitmap(_viewer.Width, _viewer.Height, System.Drawing.Imaging.PixelFormat.Format48bppRgb);
System.Drawing.Imaging.BitmapData data16 = bmp16.LockBits(_viewer.ClientRectangle, System.Drawing.Imaging.ImageLockMode.WriteOnly, bmp16.PixelFormat);
unsafe { (populates bmp16) }
bmp16.Save( "C:/temp/48bpp.png", System.Drawing.Imaging.ImageFormat.Png );
Run Code Online (Sandbox Code Playgroud)
ImageMagik(和其他应用程序)验证这确实是一个16bpp的图像:
C:\temp>identify 48bpp.png
48bpp.png PNG 1022x1125 1022x1125+0+0 DirectClass 16-bit 900.963kb
Run Code Online (Sandbox Code Playgroud)
然而,我很失望地发现,在重新读取PNG时,它已被转换为Format32bppRgb,当使用时:
Bitmap bmp = new Bitmap( "c:/temp/48bpp.png", false );
String info = String.Format("PixelFormat: {0}", bmp.PixelFormat );
...
Run Code Online (Sandbox Code Playgroud)
鉴于PNG编解码器可以编写Format48bppRgb,有没有什么方法可以使用.NET在没有转换的情况下读取它?我不介意它是否为DrawImage调用执行此操作,但我想访问解压缩的原始数据以进行某些直方图/图像处理工作.