diff options
Diffstat (limited to 'o3d')
-rw-r--r-- | o3d/command_buffer/common/cross/resource.cc | 2 | ||||
-rw-r--r-- | o3d/command_buffer/common/cross/resource.h | 1 | ||||
-rw-r--r-- | o3d/command_buffer/service/win/d3d9/effect_d3d9.cc | 14 | ||||
-rw-r--r-- | o3d/core/cross/buffer.cc | 7 | ||||
-rw-r--r-- | o3d/core/cross/command_buffer/effect_cb.cc | 4 |
5 files changed, 25 insertions, 3 deletions
diff --git a/o3d/command_buffer/common/cross/resource.cc b/o3d/command_buffer/common/cross/resource.cc index 7619ba0..cf7082f 100644 --- a/o3d/command_buffer/common/cross/resource.cc +++ b/o3d/command_buffer/common/cross/resource.cc @@ -101,6 +101,8 @@ unsigned int GetDataSize(DataType type) { return sizeof(bool); // NOLINT case SAMPLER: return sizeof(ResourceID); // NOLINT + case TEXTURE: + return sizeof(ResourceID); // NOLINT default: LOG(FATAL) << "Invalid type."; return 0; diff --git a/o3d/command_buffer/common/cross/resource.h b/o3d/command_buffer/common/cross/resource.h index cbdff26..8e86723 100644 --- a/o3d/command_buffer/common/cross/resource.h +++ b/o3d/command_buffer/common/cross/resource.h @@ -101,6 +101,7 @@ enum DataType { INT, BOOL, SAMPLER, + TEXTURE, NUM_TYPES, MAKE_32_BIT = 0x7fffffff, }; diff --git a/o3d/command_buffer/service/win/d3d9/effect_d3d9.cc b/o3d/command_buffer/service/win/d3d9/effect_d3d9.cc index a472e79..7cfee14 100644 --- a/o3d/command_buffer/service/win/d3d9/effect_d3d9.cc +++ b/o3d/command_buffer/service/win/d3d9/effect_d3d9.cc @@ -227,6 +227,16 @@ static effect_param::DataType GetDataTypeFromD3D( } else { return effect_param::UNKNOWN; } + case D3DXPT_TEXTURE: + case D3DXPT_TEXTURE1D: + case D3DXPT_TEXTURE2D: + case D3DXPT_TEXTURE3D: + case D3DXPT_TEXTURECUBE: + if (desc.Class == D3DXPC_OBJECT) { + return effect_param::TEXTURE; + } else { + return effect_param::UNKNOWN; + } default: return effect_param::UNKNOWN; } @@ -425,6 +435,10 @@ bool EffectParamD3D9::SetData(GAPID3D9 *gapi, } break; } + case effect_param::TEXTURE: { + // TODO(rlp): finish + break; + } default: DLOG(ERROR) << "Invalid parameter type."; return false; diff --git a/o3d/core/cross/buffer.cc b/o3d/core/cross/buffer.cc index acb6b31..d467d987 100644 --- a/o3d/core/cross/buffer.cc +++ b/o3d/core/cross/buffer.cc @@ -199,7 +199,6 @@ bool Buffer::ReshuffleBuffer(unsigned int new_stride, Field* field_to_remove) { } } } - // Copy the reorganized data into a new buffer. { ConcreteFree(); @@ -210,7 +209,11 @@ bool Buffer::ReshuffleBuffer(unsigned int new_stride, Field* field_to_remove) { << " for Buffer '" << name() << "'"; return false; } - + // stride_ must be set before GetData is called so that the proper size + // buffer is allocated. We also need to set it after this function is + // is completed (see CreateField, RemoveField) for when we create a new + // buffer with no fields yet. + stride_ = new_stride; BufferLockHelper helper(this); void* destination = helper.GetData(Buffer::WRITE_ONLY); if (!destination) { diff --git a/o3d/core/cross/command_buffer/effect_cb.cc b/o3d/core/cross/command_buffer/effect_cb.cc index 7a5d11b..afa9e0f 100644 --- a/o3d/core/cross/command_buffer/effect_cb.cc +++ b/o3d/core/cross/command_buffer/effect_cb.cc @@ -166,6 +166,8 @@ static const ObjectBase::Class* CBTypeToParamType( return ParamMatrix4::GetApparentClass(); case effect_param::SAMPLER: return ParamSampler::GetApparentClass(); + case effect_param::TEXTURE: + return ParamTexture::GetApparentClass(); default : { DLOG(ERROR) << "Cannot convert command buffer type " << type @@ -199,7 +201,7 @@ void EffectCB::GetParameterInfo(EffectParameterInfoArray *array) { } void EffectCB::GetStreamInfo(EffectStreamInfoArray *array) { - // To be filled in + // TODO(rlp) } } // namespace o3d |