mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-29 21:30:53 +00:00
Support advanced cbuffer layouts
* This includes 8/16/64-bit integers, 16-bit/64-bit floats, and scalar block packing
This commit is contained in:
@@ -189,6 +189,27 @@ struct TypeConversion<uint8_t, false>
|
||||
static PyObject *ConvertToPy(const uint8_t &in) { return PyLong_FromUnsignedLong(in); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct TypeConversion<int8_t, false>
|
||||
{
|
||||
static int ConvertFromPy(PyObject *in, int8_t &out)
|
||||
{
|
||||
if(!PyLong_Check(in))
|
||||
return SWIG_TypeError;
|
||||
|
||||
uint32_t longval = PyLong_AsUnsignedLong(in);
|
||||
|
||||
if(PyErr_Occurred() || longval > 0xff)
|
||||
return SWIG_OverflowError;
|
||||
|
||||
out = int8_t(longval & 0xff);
|
||||
|
||||
return SWIG_OK;
|
||||
}
|
||||
|
||||
static PyObject *ConvertToPy(const int8_t &in) { return PyLong_FromLong(in); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct TypeConversion<uint16_t, false>
|
||||
{
|
||||
@@ -210,6 +231,27 @@ struct TypeConversion<uint16_t, false>
|
||||
static PyObject *ConvertToPy(const uint16_t &in) { return PyLong_FromUnsignedLong(in); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct TypeConversion<int16_t, false>
|
||||
{
|
||||
static int ConvertFromPy(PyObject *in, int16_t &out)
|
||||
{
|
||||
if(!PyLong_Check(in))
|
||||
return SWIG_TypeError;
|
||||
|
||||
uint32_t longval = PyLong_AsLong(in);
|
||||
|
||||
if(PyErr_Occurred() || longval > 0xffff)
|
||||
return SWIG_OverflowError;
|
||||
|
||||
out = int16_t(longval & 0xff);
|
||||
|
||||
return SWIG_OK;
|
||||
}
|
||||
|
||||
static PyObject *ConvertToPy(const int16_t &in) { return PyLong_FromLong(in); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct TypeConversion<uint32_t, false>
|
||||
{
|
||||
@@ -267,6 +309,25 @@ struct TypeConversion<uint64_t, false>
|
||||
static PyObject *ConvertToPy(const uint64_t &in) { return PyLong_FromUnsignedLongLong(in); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct TypeConversion<int64_t, false>
|
||||
{
|
||||
static int ConvertFromPy(PyObject *in, int64_t &out)
|
||||
{
|
||||
if(!PyLong_Check(in))
|
||||
return SWIG_TypeError;
|
||||
|
||||
out = PyLong_AsLongLong(in);
|
||||
|
||||
if(PyErr_Occurred())
|
||||
return SWIG_OverflowError;
|
||||
|
||||
return SWIG_OK;
|
||||
}
|
||||
|
||||
static PyObject *ConvertToPy(const int64_t &in) { return PyLong_FromLongLong(in); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct TypeConversion<float, false>
|
||||
{
|
||||
|
||||
@@ -155,9 +155,13 @@ FIXED_ARRAY_TYPEMAPS(double)
|
||||
FIXED_ARRAY_TYPEMAPS(float)
|
||||
FIXED_ARRAY_TYPEMAPS(bool)
|
||||
FIXED_ARRAY_TYPEMAPS(uint64_t)
|
||||
FIXED_ARRAY_TYPEMAPS(int64_t)
|
||||
FIXED_ARRAY_TYPEMAPS(uint32_t)
|
||||
FIXED_ARRAY_TYPEMAPS(int32_t)
|
||||
FIXED_ARRAY_TYPEMAPS(uint16_t)
|
||||
FIXED_ARRAY_TYPEMAPS(int16_t)
|
||||
FIXED_ARRAY_TYPEMAPS(uint8_t)
|
||||
FIXED_ARRAY_TYPEMAPS(int8_t)
|
||||
|
||||
REFCOUNTED_TYPE(SDChunk);
|
||||
REFCOUNTED_TYPE(SDObject);
|
||||
|
||||
Reference in New Issue
Block a user