summaryrefslogtreecommitdiffstats
path: root/o3d/core/win
diff options
context:
space:
mode:
authorgman@google.com <gman@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-09 22:59:37 +0000
committergman@google.com <gman@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-09 22:59:37 +0000
commitc1bf07dd1da400c45c8b0af7aa3f24dfdbbfc615 (patch)
treed7df97e6184d7be23e1710be728332f1d0077f68 /o3d/core/win
parent013a4d61cc1d89a24690dfead3e6b22377d5993a (diff)
downloadchromium_src-c1bf07dd1da400c45c8b0af7aa3f24dfdbbfc615.zip
chromium_src-c1bf07dd1da400c45c8b0af7aa3f24dfdbbfc615.tar.gz
chromium_src-c1bf07dd1da400c45c8b0af7aa3f24dfdbbfc615.tar.bz2
Add ClientInfo
This allows an app to ask a few things from the client. 1) How many objects the client is tracking. This is useful for a quick way to check that you're freeing resources. While the developer could use client.objects.length or client.packs[ii].objects.length that wouldend up creating hundreds of thousands of NPObjects. 2) Check if the software renderer is being used 3) Check the approximate amount of memory used by textures. Again, they could compute this with client.getObjectsByClassName('o3d.Texture') but it seemed like it might be useful. I say approximate because I would have to dig down into the indivdual renderers to get better info since a NPOT card will use more memory but it didn't seem worth it. 4) check the approximate amount of memory used by hardware buffers. Review URL: http://codereview.chromium.org/155276 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20334 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'o3d/core/win')
-rw-r--r--o3d/core/win/d3d9/renderer_d3d9.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/o3d/core/win/d3d9/renderer_d3d9.cc b/o3d/core/win/d3d9/renderer_d3d9.cc
index de2ab2c..aaf920e 100644
--- a/o3d/core/win/d3d9/renderer_d3d9.cc
+++ b/o3d/core/win/d3d9/renderer_d3d9.cc
@@ -43,6 +43,7 @@
#include "core/cross/renderer_platform.h"
#include "core/cross/semantic_manager.h"
#include "core/cross/service_dependency.h"
+#include "core/cross/client_info.h"
#include "core/cross/shape.h"
#include "core/cross/features.h"
#include "core/cross/types.h"
@@ -366,7 +367,7 @@ bool IsForceSoftwareRendererEnabled() {
&key))) {
return false;
}
-
+
bool enabled = false;
DWORD type;
DWORD value;
@@ -398,6 +399,7 @@ Renderer::InitStatus InitializeD3D9Context(
D3DPRESENT_PARAMETERS* d3d_present_parameters,
bool fullscreen,
Features* features,
+ ServiceLocator* service_locator,
int* out_width,
int* out_height) {
@@ -411,7 +413,7 @@ Renderer::InitStatus InitializeD3D9Context(
// Create a hardware device.
status_hardware = CreateDirect3D(Direct3DCreate9, d3d, features);
}
-
+
if (status_hardware != Renderer::SUCCESS) {
Renderer::InitStatus status_software = CreateDirect3D(
Direct3DCreate9Software, d3d, features);
@@ -430,6 +432,10 @@ Renderer::InitStatus InitializeD3D9Context(
}
SetupSoftwareRenderer(*d3d);
+
+ ClientInfoManager* client_info_manager =
+ service_locator->GetService<ClientInfoManager>();
+ client_info_manager->SetSoftwareRenderer(true);
}
D3DDISPLAYMODE d3ddm;
@@ -978,6 +984,7 @@ Renderer::InitStatus RendererD3D9::InitPlatformSpecific(
&d3d_present_parameters_,
fullscreen_,
features(),
+ service_locator(),
&width,
&height);
if (init_status != SUCCESS) {