svn merge -r39493:39664 https://svn.blender.org/svnroot/bf-blender/trunk/blender
This commit is contained in:
@@ -54,7 +54,10 @@ typedef struct SDNA {
|
||||
|
||||
(sp[2], sp[3]), (sp[4], sp[5]), .. are the member
|
||||
type and name numbers respectively */
|
||||
|
||||
|
||||
struct GHash *structs_map; /* ghash for faster lookups,
|
||||
requires WITH_DNA_GHASH to be used for now */
|
||||
|
||||
/* wrong place for this really, its a simple
|
||||
* cache for findstruct_nr.
|
||||
*/
|
||||
|
||||
@@ -267,7 +267,7 @@ typedef struct SpaceImage {
|
||||
float centx, centy; /* storage for offset while render drawing */
|
||||
|
||||
short curtile; /* the currently active tile of the image when tile is enabled, is kept in sync with the active faces tile */
|
||||
short imtypenr;
|
||||
short pad;
|
||||
short lock;
|
||||
short pin;
|
||||
char dt_uv; /* UV draw type */
|
||||
|
||||
@@ -342,6 +342,7 @@ typedef struct TexMapping {
|
||||
#define TEX_NORMALMAP 2048
|
||||
#define TEX_GAUSS_MIP 4096
|
||||
#define TEX_FILTER_MIN 8192
|
||||
#define TEX_DERIVATIVEMAP 16384
|
||||
|
||||
/* texfilter */
|
||||
// TXF_BOX -> blender's old texture filtering method
|
||||
|
||||
@@ -27,12 +27,17 @@
|
||||
|
||||
# message(STATUS "Configuring makesdna")
|
||||
|
||||
# add_definitions(-DWITH_DNA_GHASH)
|
||||
|
||||
blender_include_dirs(
|
||||
../../../../intern/guardedalloc
|
||||
../../blenloader
|
||||
../../blenlib
|
||||
..
|
||||
)
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Build makesdna executable
|
||||
set(SRC
|
||||
makesdna.c
|
||||
@@ -56,6 +61,8 @@ add_custom_command(
|
||||
DEPENDS makesdna
|
||||
)
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Build bf_dna library
|
||||
set(INC
|
||||
|
||||
@@ -72,3 +79,22 @@ set(SRC
|
||||
)
|
||||
|
||||
blender_add_lib(bf_dna "${SRC}" "${INC}" "${INC_SYS}")
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Build bf_dna_blenlib library
|
||||
set(INC
|
||||
|
||||
)
|
||||
|
||||
set(INC_SYS
|
||||
|
||||
)
|
||||
|
||||
set(SRC
|
||||
../../blenlib/intern/BLI_mempool.c
|
||||
../../blenlib/intern/listbase.c
|
||||
../../blenlib/intern/BLI_ghash.c
|
||||
)
|
||||
|
||||
blender_add_lib(bf_dna_blenlib "${SRC}" "${INC}" "${INC_SYS}")
|
||||
|
||||
@@ -67,5 +67,6 @@ else:
|
||||
else:
|
||||
dna.Command ('dna.c', '', root_build_dir+os.sep+"makesdna.exe $TARGET")
|
||||
|
||||
# TODO, get WITH_DNA_GHASH working, see CMake's 'WITH_DNA_GHASH'
|
||||
obj = ['intern/dna.c', 'intern/dna_genfile.c']
|
||||
Return ('obj')
|
||||
|
||||
@@ -42,6 +42,10 @@
|
||||
|
||||
#include "MEM_guardedalloc.h" // for MEM_freeN MEM_mallocN MEM_callocN
|
||||
|
||||
#ifdef WITH_DNA_GHASH
|
||||
# include "BLI_ghash.h"
|
||||
#endif
|
||||
|
||||
#include "DNA_genfile.h"
|
||||
#include "DNA_sdna_types.h" // for SDNA ;-)
|
||||
|
||||
@@ -197,7 +201,11 @@ void DNA_sdna_free(SDNA *sdna)
|
||||
MEM_freeN((void *)sdna->names);
|
||||
MEM_freeN(sdna->types);
|
||||
MEM_freeN(sdna->structs);
|
||||
|
||||
|
||||
#ifdef WITH_DNA_GHASH
|
||||
BLI_ghash_free(sdna->structs_map, NULL, NULL);
|
||||
#endif
|
||||
|
||||
MEM_freeN(sdna);
|
||||
}
|
||||
|
||||
@@ -275,24 +283,30 @@ static short *findstruct_name(SDNA *sdna, const char *str)
|
||||
int DNA_struct_find_nr(SDNA *sdna, const char *str)
|
||||
{
|
||||
short *sp= NULL;
|
||||
int a;
|
||||
|
||||
if(sdna->lastfind<sdna->nr_structs) {
|
||||
sp= sdna->structs[sdna->lastfind];
|
||||
if(strcmp( sdna->types[ sp[0] ], str )==0) return sdna->lastfind;
|
||||
}
|
||||
|
||||
for(a=0; a<sdna->nr_structs; a++) {
|
||||
#ifdef WITH_DNA_GHASH
|
||||
return (intptr_t)BLI_ghash_lookup(sdna->structs_map, str) - 1;
|
||||
#else
|
||||
{
|
||||
int a;
|
||||
|
||||
sp= sdna->structs[a];
|
||||
|
||||
if(strcmp( sdna->types[ sp[0] ], str )==0) {
|
||||
sdna->lastfind= a;
|
||||
return a;
|
||||
for(a=0; a<sdna->nr_structs; a++) {
|
||||
|
||||
sp= sdna->structs[a];
|
||||
|
||||
if(strcmp( sdna->types[ sp[0] ], str )==0) {
|
||||
sdna->lastfind= a;
|
||||
return a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ************************* END DIV ********************** */
|
||||
@@ -481,6 +495,16 @@ static void init_structDNA(SDNA *sdna, int do_endian_swap)
|
||||
sp[10]= 9;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef WITH_DNA_GHASH
|
||||
/* create a ghash lookup to speed up */
|
||||
sdna->structs_map= BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp, "init_structDNA gh");
|
||||
|
||||
for(nr = 0; nr < sdna->nr_structs; nr++) {
|
||||
sp= sdna->structs[nr];
|
||||
BLI_ghash_insert(sdna->structs_map, (void *)sdna->types[sp[0]], (void *)(nr + 1));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user