diff options
Diffstat (limited to 'o3d')
-rw-r--r-- | o3d/command_buffer/service/win/d3d9/gapi_d3d9.h | 964 | ||||
-rw-r--r-- | o3d/command_buffer/service/win/d3d9/texture_d3d9.h | 24 |
2 files changed, 494 insertions, 494 deletions
diff --git a/o3d/command_buffer/service/win/d3d9/gapi_d3d9.h b/o3d/command_buffer/service/win/d3d9/gapi_d3d9.h index ca1adce..1965407 100644 --- a/o3d/command_buffer/service/win/d3d9/gapi_d3d9.h +++ b/o3d/command_buffer/service/win/d3d9/gapi_d3d9.h @@ -1,406 +1,406 @@ -/*
- * Copyright 2009, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-// This file contains the GAPID3D9 class, implementing the GAPI interface for
-// D3D9.
-
-#ifndef O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_
-#define O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_
-
-#include "command_buffer/common/cross/gapi_interface.h"
-#include "command_buffer/service/win/d3d9/d3d9_utils.h"
-#include "command_buffer/service/win/d3d9/geometry_d3d9.h"
-#include "command_buffer/service/win/d3d9/effect_d3d9.h"
-#include "command_buffer/service/win/d3d9/texture_d3d9.h"
-#include "command_buffer/service/win/d3d9/sampler_d3d9.h"
-#include "command_buffer/service/win/d3d9/render_surface_d3d9.h"
-
-namespace o3d {
-namespace command_buffer {
-
-// This class implements the GAPI interface for D3D9.
-class GAPID3D9 : public GAPIInterface {
- public:
- GAPID3D9();
- virtual ~GAPID3D9();
-
- void set_hwnd(HWND hwnd) { hwnd_ = hwnd; }
- HWND hwnd() const { return hwnd_; }
-
- // Initializes the graphics context, bound to a window.
- // Returns:
- // true if successful.
- virtual bool Initialize();
-
- // Destroys the graphics context.
- virtual void Destroy();
-
- // Implements the BeginFrame function for D3D9.
- virtual void BeginFrame();
-
- // Implements the EndFrame function for D3D9.
- virtual void EndFrame();
-
- // Implements the Clear function for D3D9.
- virtual void Clear(unsigned int buffers,
- const RGBA &color,
- float depth,
- unsigned int stencil);
-
- // Implements the SetViewport function for D3D9.
- virtual void SetViewport(unsigned int x,
- unsigned int y,
- unsigned int width,
- unsigned int height,
- float z_min,
- float z_max);
-
- // Implements the CreateVertexBuffer function for D3D9.
- virtual ParseError CreateVertexBuffer(ResourceId id,
- unsigned int size,
- unsigned int flags);
-
- // Implements the DestroyVertexBuffer function for D3D9.
- virtual ParseError DestroyVertexBuffer(ResourceId id);
-
- // Implements the SetVertexBufferData function for D3D9.
- virtual ParseError SetVertexBufferData(ResourceId id,
- unsigned int offset,
- unsigned int size,
- const void *data);
-
- // Implements the GetVertexBufferData function for D3D9.
- virtual ParseError GetVertexBufferData(ResourceId id,
- unsigned int offset,
- unsigned int size,
- void *data);
-
- // Implements the CreateIndexBuffer function for D3D9.
- virtual ParseError CreateIndexBuffer(ResourceId id,
- unsigned int size,
- unsigned int flags);
-
- // Implements the DestroyIndexBuffer function for D3D9.
- virtual ParseError DestroyIndexBuffer(ResourceId id);
-
- // Implements the SetIndexBufferData function for D3D9.
- virtual ParseError SetIndexBufferData(ResourceId id,
- unsigned int offset,
- unsigned int size,
- const void *data);
-
- // Implements the GetIndexBufferData function for D3D9.
- virtual ParseError GetIndexBufferData(ResourceId id,
- unsigned int offset,
- unsigned int size,
- void *data);
-
- // Implements the CreateVertexStruct function for D3D9.
- virtual ParseError CreateVertexStruct(ResourceId id,
- unsigned int input_count);
-
- // Implements the DestroyVertexStruct function for D3D9.
- virtual ParseError DestroyVertexStruct(ResourceId id);
-
- // Implements the SetVertexInput function for D3D9.
- virtual ParseError SetVertexInput(ResourceId vertex_struct_id,
- unsigned int input_index,
- ResourceId vertex_buffer_id,
- unsigned int offset,
- unsigned int stride,
- vertex_struct::Type type,
- vertex_struct::Semantic semantic,
- unsigned int semantic_index);
-
- // Implements the SetVertexStruct function for D3D9.
- virtual ParseError SetVertexStruct(ResourceId id);
-
- // Implements the Draw function for D3D9.
- virtual ParseError Draw(PrimitiveType primitive_type,
- unsigned int first,
- unsigned int count);
-
- // Implements the DrawIndexed function for D3D9.
- virtual ParseError DrawIndexed(PrimitiveType primitive_type,
- ResourceId index_buffer_id,
- unsigned int first,
- unsigned int count,
- unsigned int min_index,
- unsigned int max_index);
-
- // Implements the CreateEffect function for D3D9.
- virtual ParseError CreateEffect(ResourceId id,
- unsigned int size,
- const void *data);
-
- // Implements the DestroyEffect function for D3D9.
- virtual ParseError DestroyEffect(ResourceId id);
-
- // Implements the SetEffect function for D3D9.
- virtual ParseError SetEffect(ResourceId id);
-
- // Implements the GetParamCount function for D3D9.
- virtual ParseError GetParamCount(ResourceId id,
- unsigned int size,
- void *data);
-
- // Implements the CreateParam function for D3D9.
- virtual ParseError CreateParam(ResourceId param_id,
- ResourceId effect_id,
- unsigned int index);
-
- // Implements the CreateParamByName function for D3D9.
- virtual ParseError CreateParamByName(ResourceId param_id,
- ResourceId effect_id,
- unsigned int size,
- const void *name);
-
- // Implements the DestroyParam function for D3D9.
- virtual ParseError DestroyParam(ResourceId id);
-
- // Implements the SetParamData function for D3D9.
- virtual ParseError SetParamData(ResourceId id,
- unsigned int size,
- const void *data);
-
- // Implements the GetParamDesc function for D3D9.
- virtual ParseError GetParamDesc(ResourceId id,
- unsigned int size,
- void *data);
-
- // Implements the GetStreamCount function for D3D9.
- virtual ParseError GetStreamCount(ResourceId id,
- unsigned int size,
- void *data);
-
- // Implements the GetStreamDesc function for D3D9.
- virtual ParseError GetStreamDesc(ResourceId id,
- unsigned int index,
- unsigned int size,
- void *data);
-
- // Implements the CreateTexture2D function for D3D9.
- virtual ParseError CreateTexture2D(ResourceId id,
- unsigned int width,
- unsigned int height,
- unsigned int levels,
- texture::Format format,
- unsigned int flags,
- bool enable_render_surfaces);
-
- // Implements the CreateTexture3D function for D3D9.
- virtual ParseError CreateTexture3D(ResourceId id,
- unsigned int width,
- unsigned int height,
- unsigned int depth,
- unsigned int levels,
- texture::Format format,
- unsigned int flags,
- bool enable_render_surfaces);
-
- // Implements the CreateTextureCube function for D3D9.
- virtual ParseError CreateTextureCube(ResourceId id,
- unsigned int side,
- unsigned int levels,
- texture::Format format,
- unsigned int flags,
- bool enable_render_surfaces);
-
- // Implements the SetTextureData function for D3D9.
- virtual ParseError SetTextureData(ResourceId id,
- unsigned int x,
- unsigned int y,
- unsigned int z,
- unsigned int width,
- unsigned int height,
- unsigned int depth,
- unsigned int level,
- texture::Face face,
- unsigned int pitch,
- unsigned int slice_pitch,
- unsigned int size,
- const void *data);
-
- // Implements the GetTextureData function for D3D9.
- virtual ParseError GetTextureData(ResourceId id,
- unsigned int x,
- unsigned int y,
- unsigned int z,
- unsigned int width,
- unsigned int height,
- unsigned int depth,
- unsigned int level,
- texture::Face face,
- unsigned int pitch,
- unsigned int slice_pitch,
- unsigned int size,
- void *data);
-
- // Implements the DestroyTexture function for D3D9.
- virtual ParseError DestroyTexture(ResourceId id);
-
- // Implements the CreateSampler function for D3D9.
- virtual ParseError CreateSampler(ResourceId id);
-
- // Implements the DestroySampler function for D3D9.
- virtual ParseError DestroySampler(ResourceId id);
-
- // Implements the SetSamplerStates function for D3D9.
- virtual ParseError SetSamplerStates(ResourceId id,
- sampler::AddressingMode addressing_u,
- sampler::AddressingMode addressing_v,
- sampler::AddressingMode addressing_w,
- sampler::FilteringMode mag_filter,
- sampler::FilteringMode min_filter,
- sampler::FilteringMode mip_filter,
- unsigned int max_anisotropy);
-
- // Implements the SetSamplerBorderColor function for D3D9.
- virtual ParseError SetSamplerBorderColor(ResourceId id, const RGBA &color);
-
- // Implements the SetSamplerTexture function for D3D9.
- virtual ParseError SetSamplerTexture(ResourceId id, ResourceId texture_id);
-
- // Implements the SetScissor function for D3D9.
- virtual void SetScissor(bool enable,
- unsigned int x,
- unsigned int y,
- unsigned int width,
- unsigned int height);
-
- // Implements the SetPointLineRaster function for D3D9.
- virtual void SetPointLineRaster(bool line_smooth,
- bool point_sprite,
- float point_size);
-
- // Implements the SetPolygonOffset function for D3D9.
- virtual void SetPolygonOffset(float slope_factor, float units);
-
- // Implements the SetPolygonRaster function for D3D9.
- virtual void SetPolygonRaster(PolygonMode fill_mode,
- FaceCullMode cull_mode);
-
- // Implements the SetAlphaTest function for D3D9.
- virtual void SetAlphaTest(bool enable,
- float reference,
- Comparison comp);
-
- // Implements the SetDepthTest function for D3D9.
- virtual void SetDepthTest(bool enable,
- bool write_enable,
- Comparison comp);
-
- // Implements the SetStencilTest function for D3D9.
- virtual void SetStencilTest(bool enable,
- bool separate_ccw,
- unsigned int write_mask,
- unsigned int compare_mask,
- unsigned int ref,
- Uint32 func_ops);
-
- // Implements the SetColorWritefunction for D3D9.
- virtual void SetColorWrite(bool red,
- bool green,
- bool blue,
- bool alpha,
- bool dither);
-
- // Implements the SetBlending function for D3D9.
- virtual void SetBlending(bool enable,
- bool separate_alpha,
- BlendEq color_eq,
- BlendFunc color_src_func,
- BlendFunc color_dst_func,
- BlendEq alpha_eq,
- BlendFunc alpha_src_func,
- BlendFunc alpha_dst_func);
-
- // Implements the SetBlendingColor function for D3D9.
- virtual void SetBlendingColor(const RGBA &color);
-
- // Implements the CreateRenderSurface function for D3D9.
- virtual ParseError CreateRenderSurface(ResourceId id,
- unsigned int width,
- unsigned int height,
- unsigned int mip_level,
- unsigned int side,
- ResourceId texture_id);
-
- // Implements the DestroyRenderSurface function for D3D9.
- virtual ParseError DestroyRenderSurface(ResourceId id);
-
- // Implements the CreateDepthSurface function for D3D9.
- virtual ParseError CreateDepthSurface(ResourceId id,
- unsigned int width,
- unsigned int height);
-
- // Implements teh DestroyDepthSurface function for D3D9.
- virtual ParseError DestroyDepthSurface(ResourceId id);
-
- // Implements the SetRenderSurface function for D3D9.
- virtual ParseError SetRenderSurface(ResourceId render_surface_id,
- ResourceId depth_stencil_id);
-
- // Implements the SetBackSurfaces function for D3D9.
- virtual void SetBackSurfaces();
-
- // Gets the D3D9 device.
- IDirect3DDevice9 *d3d_device() const { return d3d_device_; }
-
- // Gets a vertex buffer by resource ID.
- VertexBufferD3D9 *GetVertexBuffer(ResourceId id) {
- return vertex_buffers_.Get(id);
- }
-
- // Gets a texture by resource ID.
- TextureD3D9 *GetTexture(ResourceId id) {
- return textures_.Get(id);
- }
-
- // Gets a sampler by resource ID.
- SamplerD3D9 *GetSampler(ResourceId id) {
- return samplers_.Get(id);
- }
-
- EffectD3D9 *current_effect() { return current_effect_; }
-
- // Direct3D functions cannot be called directly because the DLLs are loaded
- // dynamically via LoadLibrary. If you need to add another Direct3D function
- // add another function here, a typedef matching the signature and a member
- // variable of that type below. Then add code to FindDirect3DFunctions to
- // get the address of that function out of the DLL and assign it to the
- // member variable. Be careful to initialize the value of the variable to
- // NULL in the constructor and to set it to again NULL in Destroy.
-
+/* + * Copyright 2009, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +// This file contains the GAPID3D9 class, implementing the GAPI interface for +// D3D9. + +#ifndef O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_ +#define O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_ + +#include "command_buffer/common/cross/gapi_interface.h" +#include "command_buffer/service/win/d3d9/d3d9_utils.h" +#include "command_buffer/service/win/d3d9/geometry_d3d9.h" +#include "command_buffer/service/win/d3d9/effect_d3d9.h" +#include "command_buffer/service/win/d3d9/texture_d3d9.h" +#include "command_buffer/service/win/d3d9/sampler_d3d9.h" +#include "command_buffer/service/win/d3d9/render_surface_d3d9.h" + +namespace o3d { +namespace command_buffer { + +// This class implements the GAPI interface for D3D9. +class GAPID3D9 : public GAPIInterface { + public: + GAPID3D9(); + virtual ~GAPID3D9(); + + void set_hwnd(HWND hwnd) { hwnd_ = hwnd; } + HWND hwnd() const { return hwnd_; } + + // Initializes the graphics context, bound to a window. + // Returns: + // true if successful. + virtual bool Initialize(); + + // Destroys the graphics context. + virtual void Destroy(); + + // Implements the BeginFrame function for D3D9. + virtual void BeginFrame(); + + // Implements the EndFrame function for D3D9. + virtual void EndFrame(); + + // Implements the Clear function for D3D9. + virtual void Clear(unsigned int buffers, + const RGBA &color, + float depth, + unsigned int stencil); + + // Implements the SetViewport function for D3D9. + virtual void SetViewport(unsigned int x, + unsigned int y, + unsigned int width, + unsigned int height, + float z_min, + float z_max); + + // Implements the CreateVertexBuffer function for D3D9. + virtual ParseError CreateVertexBuffer(ResourceId id, + unsigned int size, + unsigned int flags); + + // Implements the DestroyVertexBuffer function for D3D9. + virtual ParseError DestroyVertexBuffer(ResourceId id); + + // Implements the SetVertexBufferData function for D3D9. + virtual ParseError SetVertexBufferData(ResourceId id, + unsigned int offset, + unsigned int size, + const void *data); + + // Implements the GetVertexBufferData function for D3D9. + virtual ParseError GetVertexBufferData(ResourceId id, + unsigned int offset, + unsigned int size, + void *data); + + // Implements the CreateIndexBuffer function for D3D9. + virtual ParseError CreateIndexBuffer(ResourceId id, + unsigned int size, + unsigned int flags); + + // Implements the DestroyIndexBuffer function for D3D9. + virtual ParseError DestroyIndexBuffer(ResourceId id); + + // Implements the SetIndexBufferData function for D3D9. + virtual ParseError SetIndexBufferData(ResourceId id, + unsigned int offset, + unsigned int size, + const void *data); + + // Implements the GetIndexBufferData function for D3D9. + virtual ParseError GetIndexBufferData(ResourceId id, + unsigned int offset, + unsigned int size, + void *data); + + // Implements the CreateVertexStruct function for D3D9. + virtual ParseError CreateVertexStruct(ResourceId id, + unsigned int input_count); + + // Implements the DestroyVertexStruct function for D3D9. + virtual ParseError DestroyVertexStruct(ResourceId id); + + // Implements the SetVertexInput function for D3D9. + virtual ParseError SetVertexInput(ResourceId vertex_struct_id, + unsigned int input_index, + ResourceId vertex_buffer_id, + unsigned int offset, + unsigned int stride, + vertex_struct::Type type, + vertex_struct::Semantic semantic, + unsigned int semantic_index); + + // Implements the SetVertexStruct function for D3D9. + virtual ParseError SetVertexStruct(ResourceId id); + + // Implements the Draw function for D3D9. + virtual ParseError Draw(PrimitiveType primitive_type, + unsigned int first, + unsigned int count); + + // Implements the DrawIndexed function for D3D9. + virtual ParseError DrawIndexed(PrimitiveType primitive_type, + ResourceId index_buffer_id, + unsigned int first, + unsigned int count, + unsigned int min_index, + unsigned int max_index); + + // Implements the CreateEffect function for D3D9. + virtual ParseError CreateEffect(ResourceId id, + unsigned int size, + const void *data); + + // Implements the DestroyEffect function for D3D9. + virtual ParseError DestroyEffect(ResourceId id); + + // Implements the SetEffect function for D3D9. + virtual ParseError SetEffect(ResourceId id); + + // Implements the GetParamCount function for D3D9. + virtual ParseError GetParamCount(ResourceId id, + unsigned int size, + void *data); + + // Implements the CreateParam function for D3D9. + virtual ParseError CreateParam(ResourceId param_id, + ResourceId effect_id, + unsigned int index); + + // Implements the CreateParamByName function for D3D9. + virtual ParseError CreateParamByName(ResourceId param_id, + ResourceId effect_id, + unsigned int size, + const void *name); + + // Implements the DestroyParam function for D3D9. + virtual ParseError DestroyParam(ResourceId id); + + // Implements the SetParamData function for D3D9. + virtual ParseError SetParamData(ResourceId id, + unsigned int size, + const void *data); + + // Implements the GetParamDesc function for D3D9. + virtual ParseError GetParamDesc(ResourceId id, + unsigned int size, + void *data); + + // Implements the GetStreamCount function for D3D9. + virtual ParseError GetStreamCount(ResourceId id, + unsigned int size, + void *data); + + // Implements the GetStreamDesc function for D3D9. + virtual ParseError GetStreamDesc(ResourceId id, + unsigned int index, + unsigned int size, + void *data); + + // Implements the CreateTexture2D function for D3D9. + virtual ParseError CreateTexture2D(ResourceId id, + unsigned int width, + unsigned int height, + unsigned int levels, + texture::Format format, + unsigned int flags, + bool enable_render_surfaces); + + // Implements the CreateTexture3D function for D3D9. + virtual ParseError CreateTexture3D(ResourceId id, + unsigned int width, + unsigned int height, + unsigned int depth, + unsigned int levels, + texture::Format format, + unsigned int flags, + bool enable_render_surfaces); + + // Implements the CreateTextureCube function for D3D9. + virtual ParseError CreateTextureCube(ResourceId id, + unsigned int side, + unsigned int levels, + texture::Format format, + unsigned int flags, + bool enable_render_surfaces); + + // Implements the SetTextureData function for D3D9. + virtual ParseError SetTextureData(ResourceId id, + unsigned int x, + unsigned int y, + unsigned int z, + unsigned int width, + unsigned int height, + unsigned int depth, + unsigned int level, + texture::Face face, + unsigned int pitch, + unsigned int slice_pitch, + unsigned int size, + const void *data); + + // Implements the GetTextureData function for D3D9. + virtual ParseError GetTextureData(ResourceId id, + unsigned int x, + unsigned int y, + unsigned int z, + unsigned int width, + unsigned int height, + unsigned int depth, + unsigned int level, + texture::Face face, + unsigned int pitch, + unsigned int slice_pitch, + unsigned int size, + void *data); + + // Implements the DestroyTexture function for D3D9. + virtual ParseError DestroyTexture(ResourceId id); + + // Implements the CreateSampler function for D3D9. + virtual ParseError CreateSampler(ResourceId id); + + // Implements the DestroySampler function for D3D9. + virtual ParseError DestroySampler(ResourceId id); + + // Implements the SetSamplerStates function for D3D9. + virtual ParseError SetSamplerStates(ResourceId id, + sampler::AddressingMode addressing_u, + sampler::AddressingMode addressing_v, + sampler::AddressingMode addressing_w, + sampler::FilteringMode mag_filter, + sampler::FilteringMode min_filter, + sampler::FilteringMode mip_filter, + unsigned int max_anisotropy); + + // Implements the SetSamplerBorderColor function for D3D9. + virtual ParseError SetSamplerBorderColor(ResourceId id, const RGBA &color); + + // Implements the SetSamplerTexture function for D3D9. + virtual ParseError SetSamplerTexture(ResourceId id, ResourceId texture_id); + + // Implements the SetScissor function for D3D9. + virtual void SetScissor(bool enable, + unsigned int x, + unsigned int y, + unsigned int width, + unsigned int height); + + // Implements the SetPointLineRaster function for D3D9. + virtual void SetPointLineRaster(bool line_smooth, + bool point_sprite, + float point_size); + + // Implements the SetPolygonOffset function for D3D9. + virtual void SetPolygonOffset(float slope_factor, float units); + + // Implements the SetPolygonRaster function for D3D9. + virtual void SetPolygonRaster(PolygonMode fill_mode, + FaceCullMode cull_mode); + + // Implements the SetAlphaTest function for D3D9. + virtual void SetAlphaTest(bool enable, + float reference, + Comparison comp); + + // Implements the SetDepthTest function for D3D9. + virtual void SetDepthTest(bool enable, + bool write_enable, + Comparison comp); + + // Implements the SetStencilTest function for D3D9. + virtual void SetStencilTest(bool enable, + bool separate_ccw, + unsigned int write_mask, + unsigned int compare_mask, + unsigned int ref, + Uint32 func_ops); + + // Implements the SetColorWritefunction for D3D9. + virtual void SetColorWrite(bool red, + bool green, + bool blue, + bool alpha, + bool dither); + + // Implements the SetBlending function for D3D9. + virtual void SetBlending(bool enable, + bool separate_alpha, + BlendEq color_eq, + BlendFunc color_src_func, + BlendFunc color_dst_func, + BlendEq alpha_eq, + BlendFunc alpha_src_func, + BlendFunc alpha_dst_func); + + // Implements the SetBlendingColor function for D3D9. + virtual void SetBlendingColor(const RGBA &color); + + // Implements the CreateRenderSurface function for D3D9. + virtual ParseError CreateRenderSurface(ResourceId id, + unsigned int width, + unsigned int height, + unsigned int mip_level, + unsigned int side, + ResourceId texture_id); + + // Implements the DestroyRenderSurface function for D3D9. + virtual ParseError DestroyRenderSurface(ResourceId id); + + // Implements the CreateDepthSurface function for D3D9. + virtual ParseError CreateDepthSurface(ResourceId id, + unsigned int width, + unsigned int height); + + // Implements teh DestroyDepthSurface function for D3D9. + virtual ParseError DestroyDepthSurface(ResourceId id); + + // Implements the SetRenderSurface function for D3D9. + virtual ParseError SetRenderSurface(ResourceId render_surface_id, + ResourceId depth_stencil_id); + + // Implements the SetBackSurfaces function for D3D9. + virtual void SetBackSurfaces(); + + // Gets the D3D9 device. + IDirect3DDevice9 *d3d_device() const { return d3d_device_; } + + // Gets a vertex buffer by resource ID. + VertexBufferD3D9 *GetVertexBuffer(ResourceId id) { + return vertex_buffers_.Get(id); + } + + // Gets a texture by resource ID. + TextureD3D9 *GetTexture(ResourceId id) { + return textures_.Get(id); + } + + // Gets a sampler by resource ID. + SamplerD3D9 *GetSampler(ResourceId id) { + return samplers_.Get(id); + } + + EffectD3D9 *current_effect() { return current_effect_; } + + // Direct3D functions cannot be called directly because the DLLs are loaded + // dynamically via LoadLibrary. If you need to add another Direct3D function + // add another function here, a typedef matching the signature and a member + // variable of that type below. Then add code to FindDirect3DFunctions to + // get the address of that function out of the DLL and assign it to the + // member variable. Be careful to initialize the value of the variable to + // NULL in the constructor and to set it to again NULL in Destroy. + IDirect3D9* Direct3DCreate(UINT version) { DCHECK(direct3d_create9_); return direct3d_create9_(version); @@ -412,97 +412,97 @@ class GAPID3D9 : public GAPIInterface { return get_shader_constant_table_(function, table); } - HRESULT D3DXCreateEffect(LPDIRECT3DDEVICE9 device,
- LPCVOID src_data,
- UINT src_data_len,
- CONST D3DXMACRO * defines,
- LPD3DXINCLUDE include,
- DWORD flags,
- LPD3DXEFFECTPOOL pool,
- LPD3DXEFFECT * effect,
+ HRESULT D3DXCreateEffect(LPDIRECT3DDEVICE9 device, + LPCVOID src_data, + UINT src_data_len, + CONST D3DXMACRO * defines, + LPD3DXINCLUDE include, + DWORD flags, + LPD3DXEFFECTPOOL pool, + LPD3DXEFFECT * effect, LPD3DXBUFFER * compilation_errors) { DCHECK(create_effect_); return create_effect_(device, src_data, src_data_len, defines, include, flags, pool, effect, compilation_errors); } -
- HRESULT D3DXGetShaderInputSemantics(const DWORD* function,
- D3DXSEMANTIC* semantics,
- UINT* count) {
- DCHECK(get_shader_input_semantics_);
- return get_shader_input_semantics_(function, semantics, count);
- }
-
- private:
- bool FindDirect3DFunctions();
-
- // Validates the current vertex struct to D3D, setting the streams.
- bool ValidateStreams();
- // Validates the current effect to D3D. This sends the effect states to D3D.
- bool ValidateEffect();
- // "Dirty" the current effect. This resets the effect states to D3D, and
- // requires ValidateEffect() to be called before further draws occur.
- void DirtyEffect();
-
- // Module handle for d3d9.dll.
- HMODULE d3d_module_;
-
- // Module handle for d3dx9_n.dll
- HMODULE d3dx_module_;
-
- LPDIRECT3D9 d3d_;
- LPDIRECT3DDEVICE9 d3d_device_;
- HWND hwnd_;
- ResourceId current_vertex_struct_;
- bool validate_streams_;
- unsigned int max_vertices_;
- ResourceId current_effect_id_;
- bool validate_effect_;
+ + HRESULT D3DXGetShaderInputSemantics(const DWORD* function, + D3DXSEMANTIC* semantics, + UINT* count) { + DCHECK(get_shader_input_semantics_); + return get_shader_input_semantics_(function, semantics, count); + } + + private: + bool FindDirect3DFunctions(); + + // Validates the current vertex struct to D3D, setting the streams. + bool ValidateStreams(); + // Validates the current effect to D3D. This sends the effect states to D3D. + bool ValidateEffect(); + // "Dirty" the current effect. This resets the effect states to D3D, and + // requires ValidateEffect() to be called before further draws occur. + void DirtyEffect(); + + // Module handle for d3d9.dll. + HMODULE d3d_module_; + + // Module handle for d3dx9_n.dll + HMODULE d3dx_module_; + + LPDIRECT3D9 d3d_; + LPDIRECT3DDEVICE9 d3d_device_; + HWND hwnd_; + ResourceId current_vertex_struct_; + bool validate_streams_; + unsigned int max_vertices_; + ResourceId current_effect_id_; + bool validate_effect_; EffectD3D9 *current_effect_; IDirect3DSurface9* back_buffer_surface_; - IDirect3DSurface9* back_buffer_depth_surface_;
- ResourceId current_surface_id_;
- ResourceId current_depth_surface_id_;
-
- ResourceMap<VertexBufferD3D9> vertex_buffers_;
- ResourceMap<IndexBufferD3D9> index_buffers_;
- ResourceMap<VertexStructD3D9> vertex_structs_;
- ResourceMap<EffectD3D9> effects_;
- ResourceMap<EffectParamD3D9> effect_params_;
- ResourceMap<TextureD3D9> textures_;
- ResourceMap<SamplerD3D9> samplers_;
- ResourceMap<RenderSurfaceD3D9> render_surfaces_;
- ResourceMap<RenderDepthStencilSurfaceD3D9> depth_surfaces_;
-
+ IDirect3DSurface9* back_buffer_depth_surface_; + ResourceId current_surface_id_; + ResourceId current_depth_surface_id_; + + ResourceMap<VertexBufferD3D9> vertex_buffers_; + ResourceMap<IndexBufferD3D9> index_buffers_; + ResourceMap<VertexStructD3D9> vertex_structs_; + ResourceMap<EffectD3D9> effects_; + ResourceMap<EffectParamD3D9> effect_params_; + ResourceMap<TextureD3D9> textures_; + ResourceMap<SamplerD3D9> samplers_; + ResourceMap<RenderSurfaceD3D9> render_surfaces_; + ResourceMap<RenderDepthStencilSurfaceD3D9> depth_surfaces_; + typedef IDirect3D9* (WINAPI *Direct3DCreate9Proc)(UINT version); - Direct3DCreate9Proc direct3d_create9_;
+ Direct3DCreate9Proc direct3d_create9_; typedef HRESULT (WINAPI *D3DXGetShaderConstantTableProc)( const DWORD* function, LPD3DXCONSTANTTABLE* table); D3DXGetShaderConstantTableProc get_shader_constant_table_; - typedef HRESULT (WINAPI *D3DXCreateEffectProc)(
- LPDIRECT3DDEVICE9 device,
- LPCVOID src_data,
- UINT src_data_len,
- CONST D3DXMACRO * defines,
- LPD3DXINCLUDE include,
- DWORD flags,
- LPD3DXEFFECTPOOL pool,
- LPD3DXEFFECT * effect,
+ typedef HRESULT (WINAPI *D3DXCreateEffectProc)( + LPDIRECT3DDEVICE9 device, + LPCVOID src_data, + UINT src_data_len, + CONST D3DXMACRO * defines, + LPD3DXINCLUDE include, + DWORD flags, + LPD3DXEFFECTPOOL pool, + LPD3DXEFFECT * effect, LPD3DXBUFFER * compilation_errors); - D3DXCreateEffectProc create_effect_;
-
- typedef HRESULT (WINAPI *D3DXGetShaderInputSemanticsProc)(
- const DWORD* function,
- D3DXSEMANTIC* semantics,
- UINT* count);
- D3DXGetShaderInputSemanticsProc get_shader_input_semantics_;
-};
-
-} // namespace command_buffer
-} // namespace o3d
-
-#endif // O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_
-
+ D3DXCreateEffectProc create_effect_; + + typedef HRESULT (WINAPI *D3DXGetShaderInputSemanticsProc)( + const DWORD* function, + D3DXSEMANTIC* semantics, + UINT* count); + D3DXGetShaderInputSemanticsProc get_shader_input_semantics_; +}; + +} // namespace command_buffer +} // namespace o3d + +#endif // O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_ + diff --git a/o3d/command_buffer/service/win/d3d9/texture_d3d9.h b/o3d/command_buffer/service/win/d3d9/texture_d3d9.h index 332cc68..5cbbef5 100644 --- a/o3d/command_buffer/service/win/d3d9/texture_d3d9.h +++ b/o3d/command_buffer/service/win/d3d9/texture_d3d9.h @@ -78,9 +78,9 @@ class TextureD3D9 : public Texture { unsigned int size, void *data) = 0; // Creates the render surface, returning false if unable to. - virtual bool CreateRenderSurface(int width,
- int height,
- int mip_level,
+ virtual bool CreateRenderSurface(int width, + int height, + int mip_level, int side, IDirect3DSurface9** direct3d_surface) = 0; static D3DFORMAT D3DFormat(texture::Format format); @@ -135,9 +135,9 @@ class Texture2DD3D9 : public TextureD3D9 { unsigned int size, void *data); // Create a render surface which matches this texture type. - virtual bool CreateRenderSurface(int width,
- int height,
- int mip_level,
+ virtual bool CreateRenderSurface(int width, + int height, + int mip_level, int side, IDirect3DSurface9** direct3d_surface); // Gets the D3D base texture. @@ -200,9 +200,9 @@ class Texture3DD3D9 : public TextureD3D9 { unsigned int size, void *data); // Create a render surface which matches this texture type. - virtual bool CreateRenderSurface(int width,
- int height,
- int mip_level,
+ virtual bool CreateRenderSurface(int width, + int height, + int mip_level, int side, IDirect3DSurface9** direct3d_surface); // Gets the D3D base texture. @@ -260,9 +260,9 @@ class TextureCubeD3D9 : public TextureD3D9 { unsigned int size, void *data); // Create a render surface which matches this texture type. - virtual bool CreateRenderSurface(int width,
- int height,
- int mip_level,
+ virtual bool CreateRenderSurface(int width, + int height, + int mip_level, int side, IDirect3DSurface9** direct3d_surface); // Gets the D3D base texture. |