mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
Merge branch 'master' into cmake
This commit is contained in:
commit
79f9ac402f
@ -4,7 +4,6 @@ from panda3d.core import *
|
||||
from panda3d.direct import *
|
||||
from direct.directnotify.DirectNotifyGlobal import directNotify
|
||||
from direct.distributed.DistributedObjectBase import DistributedObjectBase
|
||||
from direct.showbase.PythonUtil import StackTrace
|
||||
#from PyDatagram import PyDatagram
|
||||
#from PyDatagramIterator import PyDatagramIterator
|
||||
|
||||
@ -259,7 +258,10 @@ class DistributedObject(DistributedObjectBase):
|
||||
def _destroyDO(self):
|
||||
# after this is called, the object is no longer a DistributedObject
|
||||
# but may still be used as a DelayDeleted object
|
||||
self.destroyDoStackTrace = StackTrace()
|
||||
if __debug__:
|
||||
# StackTrace is omitted in packed versions
|
||||
from direct.showbase.PythonUtil import StackTrace
|
||||
self.destroyDoStackTrace = StackTrace()
|
||||
# check for leftover cached data that was not retrieved or flushed by this object
|
||||
# this will catch typos in the data name in calls to get/setCachedData
|
||||
if hasattr(self, '_cachedData'):
|
||||
|
@ -312,7 +312,6 @@ class DoCollectionManager:
|
||||
else:
|
||||
self.notify.warning('handleSetLocation: object %s not present' % self.getMsgChannel())
|
||||
|
||||
@exceptionLogged()
|
||||
def storeObjectLocation(self, object, parentId, zoneId):
|
||||
oldParentId = object.parentId
|
||||
oldZoneId = object.zoneId
|
||||
|
@ -15,11 +15,13 @@
|
||||
#include "displayInformation.h"
|
||||
|
||||
// For __rdtsc
|
||||
#if defined(__i386) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)
|
||||
#ifdef _MSC_VER
|
||||
#include <intrin.h>
|
||||
#elif defined(__GNUC__) && !defined(__clang__)
|
||||
#include <x86intrin.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Returns true if these two DisplayModes are identical.
|
||||
@ -529,6 +531,7 @@ get_cpu_frequency() {
|
||||
*/
|
||||
uint64_t DisplayInformation::
|
||||
get_cpu_time() {
|
||||
#if defined(__i386) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)
|
||||
#if defined(_MSC_VER) || (defined(__GNUC__) && !defined(__clang__))
|
||||
return __rdtsc();
|
||||
#else
|
||||
@ -536,6 +539,9 @@ get_cpu_time() {
|
||||
__asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
|
||||
return ((uint64_t)hi << 32) | lo;
|
||||
#endif
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -28,6 +28,16 @@
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#endif
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
// CPUID is only available on i386 and x86-64 architectures.
|
||||
#if defined(__i386) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)
|
||||
|
||||
#if defined(__GNUC__) && !defined(__APPLE__)
|
||||
// GCC and Clang offer a useful cpuid.h header.
|
||||
#include <cpuid.h>
|
||||
@ -38,13 +48,6 @@
|
||||
#include <intrin.h>
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#endif
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
union cpuid_info {
|
||||
char str[16];
|
||||
struct {
|
||||
@ -85,6 +88,7 @@ static inline void get_cpuid(uint32_t leaf, cpuid_info &info) {
|
||||
: "0" (leaf));
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef IS_LINUX
|
||||
/**
|
||||
@ -123,6 +127,7 @@ GraphicsPipe() :
|
||||
|
||||
_display_information = new DisplayInformation();
|
||||
|
||||
#if defined(__i386) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)
|
||||
cpuid_info info;
|
||||
const uint32_t max_cpuid = get_cpuid_max(0);
|
||||
const uint32_t max_extended = get_cpuid_max(0x80000000);
|
||||
@ -148,6 +153,7 @@ GraphicsPipe() :
|
||||
brand[48] = 0;
|
||||
_display_information->_cpu_brand_string = brand;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(IS_OSX)
|
||||
// macOS exposes a lot of useful information through sysctl.
|
||||
|
@ -2194,7 +2194,7 @@ update_shader_vertex_arrays(ShaderContext *prev, bool force) {
|
||||
// Figure out which attributes to enable or disable.
|
||||
BitMask32 enabled_attribs = _enabled_attribs;
|
||||
if (_color_attrib_index != -1 &&
|
||||
color_attrib->get_type() != ColorAttrib::T_vertex) {
|
||||
color_attrib->get_color_type() != ColorAttrib::T_vertex) {
|
||||
// Vertex colours are disabled.
|
||||
enabled_attribs.clear_bit(_color_attrib_index);
|
||||
|
||||
@ -2247,7 +2247,7 @@ update_shader_vertex_arrays(ShaderContext *prev, bool force) {
|
||||
// Don't apply vertex colors if they are disabled with a ColorAttrib.
|
||||
int num_elements, element_stride, divisor;
|
||||
bool normalized;
|
||||
if ((p != _color_attrib_index || color_attrib->get_type() == ColorAttrib::T_vertex) &&
|
||||
if ((p != _color_attrib_index || color_attrib->get_color_type() == ColorAttrib::T_vertex) &&
|
||||
_glgsg->_data_reader->get_array_info(name, array_reader,
|
||||
num_values, numeric_type,
|
||||
normalized, start, stride, divisor,
|
||||
|
@ -283,6 +283,31 @@ GeomVertexArrayDataHandle(CPT(GeomVertexArrayData) object,
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
INLINE GeomVertexArrayDataHandle::
|
||||
GeomVertexArrayDataHandle(const GeomVertexArrayData *object,
|
||||
Thread *current_thread) :
|
||||
_object((GeomVertexArrayData *)object),
|
||||
_current_thread(current_thread),
|
||||
_cdata((GeomVertexArrayData::CData *)object->_cycler.read_unlocked(current_thread)),
|
||||
_writable(false)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
nassertv(_object->test_ref_count_nonzero());
|
||||
#endif // _DEBUG
|
||||
#ifdef DO_PIPELINING
|
||||
_cdata->ref();
|
||||
#endif // DO_PIPELINING
|
||||
// We must grab the lock *after* we have incremented the reference count,
|
||||
// above.
|
||||
_cdata->_rw_lock.acquire();
|
||||
#ifdef DO_MEMORY_USAGE
|
||||
MemoryUsage::update_type(this, get_class_type());
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ -309,6 +334,31 @@ GeomVertexArrayDataHandle(PT(GeomVertexArrayData) object,
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
INLINE GeomVertexArrayDataHandle::
|
||||
GeomVertexArrayDataHandle(GeomVertexArrayData *object,
|
||||
Thread *current_thread) :
|
||||
_object(object),
|
||||
_current_thread(current_thread),
|
||||
_cdata(object->_cycler.write_upstream(true, current_thread)),
|
||||
_writable(true)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
nassertv(_object->test_ref_count_nonzero());
|
||||
#endif // _DEBUG
|
||||
#ifdef DO_PIPELINING
|
||||
_cdata->ref();
|
||||
#endif // DO_PIPELINING
|
||||
// We must grab the lock *after* we have incremented the reference count,
|
||||
// above.
|
||||
_cdata->_rw_lock.acquire();
|
||||
#ifdef DO_MEMORY_USAGE
|
||||
MemoryUsage::update_type(this, get_class_type());
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Don't attempt to copy these objects.
|
||||
*/
|
||||
|
@ -250,8 +250,12 @@ class EXPCL_PANDA_GOBJ GeomVertexArrayDataHandle : public ReferenceCount, public
|
||||
private:
|
||||
INLINE GeomVertexArrayDataHandle(CPT(GeomVertexArrayData) object,
|
||||
Thread *current_thread);
|
||||
INLINE GeomVertexArrayDataHandle(const GeomVertexArrayData *object,
|
||||
Thread *current_thread);
|
||||
INLINE GeomVertexArrayDataHandle(PT(GeomVertexArrayData) object,
|
||||
Thread *current_thread);
|
||||
INLINE GeomVertexArrayDataHandle(GeomVertexArrayData *object,
|
||||
Thread *current_thread);
|
||||
INLINE GeomVertexArrayDataHandle(const GeomVertexArrayDataHandle &);
|
||||
INLINE void operator = (const GeomVertexArrayDataHandle &);
|
||||
|
||||
|
@ -1544,7 +1544,14 @@ INLINE size_t Texture::
|
||||
get_ram_mipmap_image_size(int n) const {
|
||||
CDReader cdata(_cycler);
|
||||
if (n >= 0 && n < (int)cdata->_ram_images.size()) {
|
||||
return cdata->_ram_images[n]._image.size();
|
||||
if (cdata->_ram_images[n]._pointer_image == nullptr) {
|
||||
return cdata->_ram_images[n]._image.size();
|
||||
} else {
|
||||
// Calculate it based on the given page size.
|
||||
return do_get_ram_mipmap_page_size(cdata, n) *
|
||||
do_get_expected_mipmap_z_size(cdata, n) *
|
||||
cdata->_num_views;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -3441,8 +3441,8 @@ do_load_sub_image(CData *cdata, const PNMImage &image, int x, int y, int z, int
|
||||
nassertr(y >= 0 && y < tex_y_size, false);
|
||||
nassertr(z >= 0 && z < tex_z_size, false);
|
||||
|
||||
nassertr(image.get_x_size() + x < tex_x_size, false);
|
||||
nassertr(image.get_y_size() + y < tex_y_size, false);
|
||||
nassertr(image.get_x_size() + x <= tex_x_size, false);
|
||||
nassertr(image.get_y_size() + y <= tex_y_size, false);
|
||||
|
||||
// Flip y
|
||||
y = cdata->_y_size - (image.get_y_size() + y);
|
||||
|
@ -59,6 +59,7 @@ DirectionalLight(const string &name) :
|
||||
LightLensNode(name, new OrthographicLens()),
|
||||
_has_specular_color(false)
|
||||
{
|
||||
_lenses[0]._lens->set_interocular_distance(0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -66,21 +66,27 @@ PointLight(const string &name) :
|
||||
{
|
||||
PT(Lens) lens;
|
||||
lens = new PerspectiveLens(90, 90);
|
||||
lens->set_interocular_distance(0);
|
||||
lens->set_view_vector(1, 0, 0, 0, -1, 0);
|
||||
set_lens(0, lens);
|
||||
lens = new PerspectiveLens(90, 90);
|
||||
lens->set_interocular_distance(0);
|
||||
lens->set_view_vector(-1, 0, 0, 0, -1, 0);
|
||||
set_lens(1, lens);
|
||||
lens = new PerspectiveLens(90, 90);
|
||||
lens->set_interocular_distance(0);
|
||||
lens->set_view_vector(0, 1, 0, 0, 0, 1);
|
||||
set_lens(2, lens);
|
||||
lens = new PerspectiveLens(90, 90);
|
||||
lens->set_interocular_distance(0);
|
||||
lens->set_view_vector(0, -1, 0, 0, 0, -1);
|
||||
set_lens(3, lens);
|
||||
lens = new PerspectiveLens(90, 90);
|
||||
lens->set_interocular_distance(0);
|
||||
lens->set_view_vector(0, 0, 1, 0, -1, 0);
|
||||
set_lens(4, lens);
|
||||
lens = new PerspectiveLens(90, 90);
|
||||
lens->set_interocular_distance(0);
|
||||
lens->set_view_vector(0, 0, -1, 0, -1, 0);
|
||||
set_lens(5, lens);
|
||||
}
|
||||
|
@ -68,6 +68,7 @@ Spotlight(const string &name) :
|
||||
LightLensNode(name),
|
||||
_has_specular_color(false)
|
||||
{
|
||||
_lenses[0]._lens->set_interocular_distance(0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user