aboutsummaryrefslogtreecommitdiffhomepage
path: root/gpu/include
diff options
context:
space:
mode:
authorGravatar bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2010-12-23 16:04:36 +0000
committerGravatar bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2010-12-23 16:04:36 +0000
commitef152364cb23846b419acc0a61aa84001a83e155 (patch)
treee3b3028ca561851a2ed34bc44464567590a6ff35 /gpu/include
parentdc731fd4830380a01664b99f7a23df4bfca71fac (diff)
Delete D3D9 gpu class. Was fixed-function only, had significant defeciencies around vertex array formats, and is hasn't been updated with respect to parent class changes (won't compile).
git-svn-id: http://skia.googlecode.com/svn/trunk@656 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gpu/include')
-rw-r--r--gpu/include/GrGpuD3D9.h259
1 files changed, 0 insertions, 259 deletions
diff --git a/gpu/include/GrGpuD3D9.h b/gpu/include/GrGpuD3D9.h
deleted file mode 100644
index c3d3e1a829..0000000000
--- a/gpu/include/GrGpuD3D9.h
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- Copyright 2010 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-
-#ifndef GrGpuD3D9_DEFINED
-#define GrGpuD3D9_DEFINED
-
-#include <Windows.h>
-#include <d3d9.h>
-
-#include "GrGpu.h"
-
-class GrD3D9VertexBuffer;
-class GrD3D9IndexBuffer;
-class GrD3D9Texture;
-
-// For D3D9 GrRenderTarget casts to a (GrD3D9RenderTarget*)
-struct GrD3D9RenderTarget {
- IDirect3DSurface9* fColor;
- IDirect3DSurface9* fStencil;
- bool fClearStencil;
-};
-
-// GrGpu implementation for D3D9 fixed pipeline.
-// Known needed improvements:
-// vertex/index buffers need to be better managed:
-// use no_overwrite and walk down VB/IB until reach end and wrap
-// take advantage of the redrawHint and don't recopy vertex/idx data
-// User created vertex buffers must have position Z values
-// (required for fixed pipeline) but there is no way to communicate
-// this now
-// We create a temporary sysmem surface for each texture update.
-// split this out into fixed/shader subclasses (use vdecls for shaders)
-class GrGpuD3D9 : public GrGpu {
-public:
- GrGpuD3D9(IDirect3DDevice9* device);
- virtual ~GrGpuD3D9();
-
- // overrides from GrGpu
- virtual GrTexture* createTexture(const TextureDesc& desc,
- const void* srcData);
- virtual GrVertexBuffer* createVertexBuffer(uint32_t size, bool dynamic);
- virtual GrIndexBuffer* createIndexBuffer(uint32_t size, bool dynamic);
-
- virtual void eraseColor(GrColor color);
- virtual void eraseStencil();
-
-protected:
- // overrides from GrGpu
- virtual bool flushGraphicsState(PrimitiveTypes type);
- virtual void drawIndexArrayApi(PrimitiveTypes type,
- int baseVertex,
- int vertexCount,
- int indexCount,
- const uint16_t* indexArray,
- bool redrawHint);
- virtual void drawIndexBufferApi(PrimitiveTypes type,
- int baseVertex,
- int startIndex,
- int vertexCount,
- int indexCount,
- GrIndexBuffer* indexBuffer,
- bool redrawHint);
- virtual void drawNonIndexedApi(PrimitiveTypes type,
- int baseVertex,
- int indexCount,
- bool redrawHint);
- virtual void flushScissor();
-
-private:
-
- // baseVertex may be modified while setting up the stage
- GrD3D9VertexBuffer* setupVBufferStage(int vsize, int* baseVertex,
- int vertexCount, DrawModes mode);
- GrD3D9IndexBuffer* setupIBufferStage(int* startIndex, int indexCount,
- const uint16_t* indices);
- static int vertexSize(int vertFlagBits, GrGpu::DrawModes mode);
- static bool positionsOnly(int vertFlagBits);
-
- // notify callbacks to update state tracking when related
- // objects are bound to the device or deleted outside of the class
- void notifyVertexBufferBind(GrD3D9VertexBuffer* buffer);
- void notifyVertexBufferDelete(GrD3D9VertexBuffer* buffer);
- void notifyIndexBufferBind(GrD3D9IndexBuffer* buffer);
- void notifyIndexBufferDelete(GrD3D9IndexBuffer* buffer);
- void notifyTextureDelete(GrD3D9Texture* texture);
- void notifyTextureRemoveRenderTarget(GrD3D9Texture* texture);
-
- IDirect3DSurface9* createStencil(uint32_t width,
- uint32_t height,
- D3DMULTISAMPLE_TYPE msType,
- DWORD msQual);
-
- void setRenderTargetImm();
-
- friend class GrD3D9VertexBuffer;
- friend class GrD3D9IndexBuffer;
- friend class GrD3D9Texture;
-
- GrIndexBuffer* fLastIndexBuffer;
-
- // used to track the COLORARG1 value for tex stage 0
- // needs to use ALPHAREPLICATE when using alpha-only textures
- DWORD fLastColorArg1;
-
- IDirect3DDevice9* fDevice;
- // We may use Ex functionality if this is a Ex device
- IDirect3DDevice9Ex* fDeviceEx;
-
- enum VertDecls {
- kInvalid_VertDecl = -1,
- kPosOnly_VertDecl = 0,
- kTex_VertDecl,
- kColors_VertDecl,
- kTexAndColors_VertDecl,
- kPosAsTex_VertDecl,
- kPosAsTexAndColors_VertDecl,
- kVertDeclCount
- };
-
- static const VertDecls gVertFlags2VertDeclIdx[];
- static const DWORD gDeclToFVFs[];
- static const DWORD gTextFVF;
-
- DWORD fLastVertFVF;
-
- bool fLastBlendOff;
-
- // D3D allows user pointers in place of buffers for vertex/index data
- // but it doesn't allow:
- // -multiple streams (non-interleaved) ~ this will be resolved when we
- // go AoS with our verts
- // -mixing user pointer verts with index buffer (or vice versa)
- // So we use these staging buffers
- GrD3D9VertexBuffer* fStageVBuffer;
- GrD3D9IndexBuffer* fStageIBuffer;
-
- // did we use texture coordinate generation at the last flush
- bool fLastTexGen;
-
- GrD3D9RenderTarget fDefaultRenderTarget;
-
- // We use texture stage 0 to set a constant color
- // D3D disables the stage if NULL is bound (even when the ops don't
- // reference the texture). So we have a 1x1 dummy texture that
- // gets set when drawing constant color with no texture
- GrD3D9Texture* fDummyTexture;
-};
-
-class GrD3D9Texture : public GrTexture {
-protected:
- GrD3D9Texture(uint32_t width,
- uint32_t height,
- PixelConfig config,
- IDirect3DTexture9* texture,
- IDirect3DSurface9* stencil,
- bool clearStencil,
- GrGpuD3D9* gpuD3D9);
-public:
- virtual ~GrD3D9Texture();
-
- // overloads of GrTexture
- virtual void abandon();
- virtual bool isRenderTarget();
- virtual GrRenderTarget* asRenderTarget()
- { return (GrRenderTarget*) &fRenderTarget; }
- virtual void removeRenderTarget();
- virtual void uploadTextureData(uint32_t x,
- uint32_t y,
- uint32_t width,
- uint32_t height,
- const void* srcData);
- IDirect3DTexture9* texture() const { return fTexture; }
- IDirect3DSurface9* stencil() const { return fStencil; }
- D3DFORMAT format() const { return fDesc.Format; }
-private:
- IDirect3DTexture9* fTexture;
- GrD3D9RenderTarget fRenderTarget;
- IDirect3DSurface9* fStencil;
- D3DSURFACE_DESC fDesc;
- GrGpuD3D9* fGpuD3D9;
-
- friend class GrGpuD3D9;
-
- typedef GrTexture INHERITED;
-};
-
-class GrD3D9VertexBuffer : public GrVertexBuffer {
-protected:
- GrD3D9VertexBuffer(uint32_t size,
- bool dynamic,
- IDirect3DVertexBuffer9* vbuffer,
- GrGpuD3D9* gpuD3D9);
-public:
- virtual ~GrD3D9VertexBuffer();
-
- IDirect3DVertexBuffer9* buffer() const { return fBuffer; }
-
- // overrides of GrVertexBuffer
- virtual void abandon();
- virtual void* lock();
- virtual void unlock();
- virtual bool isLocked();
- virtual bool updateData(const void* src, uint32_t srcSizeInBytes);
-
-private:
- IDirect3DVertexBuffer9* fBuffer;
- D3DVERTEXBUFFER_DESC fDesc;
- bool fLocked;
- GrGpuD3D9* fGpuD3D9;
-
- friend class GrGpuD3D9;
-
- typedef GrVertexBuffer INHERITED;
-};
-
-class GrD3D9IndexBuffer : public GrIndexBuffer {
-protected:
- GrD3D9IndexBuffer(uint32_t size,
- bool dynamic,
- IDirect3DIndexBuffer9* vbuffer,
- GrGpuD3D9* gpuD3D9);
-public:
- virtual ~GrD3D9IndexBuffer();
-
- IDirect3DIndexBuffer9* buffer() const { return fBuffer; }
-
- // overrides of GrIndexBuffer
- virtual void abandon();
- virtual void* lock();
- virtual void unlock();
- virtual bool isLocked();
- virtual bool updateData(const void* src, uint32_t srcSizeInBytes);
-private:
- IDirect3DIndexBuffer9* fBuffer;
- D3DINDEXBUFFER_DESC fDesc;
- bool fLocked;
- GrGpuD3D9* fGpuD3D9;
-
- friend class GrGpuD3D9;
-
- typedef GrIndexBuffer INHERITED;
-};
-
-#endif
-