blob: 5efac3fac8ae3ffe31ee2ef48d4bc78a929dc843 [file] [log] [blame]
daniel@transgaming.comd5d10192012-11-28 20:57:55 +00001//
shannon.woods@transgaming.com358e88d2013-01-25 21:53:11 +00002// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
daniel@transgaming.comd5d10192012-11-28 20:57:55 +00003// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
7// ShaderExecutable9.cpp: Implements a D3D9-specific class to contain shader
8// executable implementation details.
9
10#include "libGLESv2/renderer/ShaderExecutable9.h"
11
12#include "common/debug.h"
13
14namespace rx
15{
16
daniel@transgaming.com2275f912012-12-20 21:13:22 +000017ShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DPixelShader9 *executable)
daniel@transgaming.com7b18d0c2012-11-28 21:04:10 +000018 : ShaderExecutable(function, length)
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000019{
20 mPixelExecutable = executable;
21 mVertexExecutable = NULL;
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000022}
23
daniel@transgaming.com2275f912012-12-20 21:13:22 +000024ShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DVertexShader9 *executable)
daniel@transgaming.com7b18d0c2012-11-28 21:04:10 +000025 : ShaderExecutable(function, length)
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000026{
27 mVertexExecutable = executable;
28 mPixelExecutable = NULL;
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000029}
30
31ShaderExecutable9::~ShaderExecutable9()
32{
33 if (mVertexExecutable)
34 {
35 mVertexExecutable->Release();
36 }
37 if (mPixelExecutable)
38 {
39 mPixelExecutable->Release();
40 }
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000041}
42
43ShaderExecutable9 *ShaderExecutable9::makeShaderExecutable9(ShaderExecutable *executable)
44{
apatrick@chromium.org8b400b12013-01-30 21:53:40 +000045 ASSERT(HAS_DYNAMIC_TYPE(ShaderExecutable9*, executable));
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000046 return static_cast<ShaderExecutable9*>(executable);
47}
48
shannon.woods@transgaming.com358e88d2013-01-25 21:53:11 +000049IDirect3DVertexShader9 *ShaderExecutable9::getVertexShader() const
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000050{
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000051 return mVertexExecutable;
52}
53
shannon.woods@transgaming.com358e88d2013-01-25 21:53:11 +000054IDirect3DPixelShader9 *ShaderExecutable9::getPixelShader() const
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000055{
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000056 return mPixelExecutable;
57}
58
daniel@transgaming.comd5d10192012-11-28 20:57:55 +000059}