[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11140] branches/soc-2007-joeedh/source/ blender: This commit is because my harddrive is being a little
lguillaume
lecocqguillaume at gmail.com
Mon Jul 2 17:23:56 CEST 2007
Hello, there is a file missing : BKE_dsm.h
Regards.
2007/7/2, Joseph Eagar <joeedh at gmail.com>:
>
> Revision: 11140
>
> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11140
> Author: joeedh
> Date: 2007-07-02 09:42:18 +0200 (Mon, 02 Jul 2007)
>
> Log Message:
> -----------
> This commit is because my harddrive is being a little
> weird (or perhaps notepad2 was acting up, or window's
> disk cache was being quirky, I'm not sure).
>
> This has the initial tile cache interface. The tile
> system is fully generic, and includes an API for
> manipulating both files and memory buffers. This API
> nearly completely duplicates the stdlib file library.
>
> The tiling system does not work yet, though. In
> fact DSM in general is now broken by this. So don't
> update until I get things working again. :)
>
> Modified Paths:
> --------------
> branches/soc-2007-joeedh/source/blender/blenkernel/BKE_tile.h
>
> branches/soc-2007-joeedh/source/blender/render/intern/include/shadbuf.h
>
> branches/soc-2007-joeedh/source/blender/render/intern/source/convertblender.c
> branches/soc-2007-joeedh/source/blender/render/intern/source/shadbuf.c
> branches/soc-2007-joeedh/source/blender/render/intern/source/zbuf.c
>
> Added Paths:
> -----------
> branches/soc-2007-joeedh/source/blender/blenkernel/intern/tcs_cache.c
> branches/soc-2007-joeedh/source/blender/blenkernel/intern/tcs_dsm.c
> branches/soc-2007-joeedh/source/blender/blenkernel/intern/tcs_file.c
> branches/soc-2007-joeedh/source/blender/blenkernel/intern/tcs_image.c
>
> Removed Paths:
> -------------
> branches/soc-2007-joeedh/source/blender/blenkernel/intern/cache.c
>
> Modified: branches/soc-2007-joeedh/source/blender/blenkernel/BKE_tile.h
> ===================================================================
> --- branches/soc-2007-joeedh/source/blender/blenkernel/BKE_tile.h
> 2007-07-01 14:12:10 UTC (rev 11139)
> +++ branches/soc-2007-joeedh/source/blender/blenkernel/BKE_tile.h
> 2007-07-02 07:42:18 UTC (rev 11140)
> @@ -71,17 +71,18 @@
> typedef struct TCS_File {
> struct TCS_File *next, *prev;
> int is_mem;
> + int error_occured;
> void *ptr; /*can be either a FILE handle or a piece of memory.*/
> + char filename[256];
>
> /*remember to make sure these are updated, even if using
> a real FILE file instead of a memory block!*/
> - unsigned long length, cursor;
> + unsigned long length, cursor, totallocated;
> } TCS_File;
>
> typedef struct TCS_Tile {
> struct TCS_Tile *next, *prev;
> - void (*loadFromCache)(struct TCS_Tile *self, TCS_File *file,
> - unsigned long start);
> + void (*loadFromCache)(struct TCS_Tile *self, TCS_File *file);
>
> /*should free client data after writing to disk, but not free
> the TCS_Tile itself.
> @@ -91,57 +92,70 @@
> unsigned int (*saveToCache)(struct TCS_Tile *self, TCS_File *file,
> unsigned long current_position);
>
> + /*returns amount of memory the tile is using, in bytes*/
> + unsigned int (*getTileMem)(struct TCS_Tile *self);
> + void *(*getTilePixel)(struct TCS_Tile *self, int x, int y, int z);
> +
> int is_cached; /*is 1 if either (or both) is_compressed or
> is_written is 1.*/
>
> /*-privae variables, do not touch!-*/
> int is_compressed, is_written, mem_used;
> - TCS_File *file;
> - int filepos;
> + TCS_File *file, *compressed_memfile;
> +
> + /*filepos is the cached tile position. this must *never* be
> messed up!*/
> + int filepos, len; /*len is for caching the tile len, to avoid
> constantly recalculating the size*/
>
> struct TCS_TilePool *pool;
> struct TCS_TileBuffer *buffer; /*parent buffer*/
> } TCS_Tile;
>
> -/*List of files used by a tile pool*/
> -typedef struct TCS_FileList {
> - ListBase open_files; /*open files*/
> - unsigned long long len; /*length of all files, in bytes.*/
> -} TCS_FileList;
> -
> /*pools manage tiles, but the the tiles themselves belong to
> TCS_TileBuffers.
> This is a generic container structure, so it can hold any tile from
> any buffer, of any buffer type.*/
> typedef struct TCS_TilePool {
> struct TCS_TilePool *next, *prev;
> ListBase tiles;
> +
> + ListBase open_files; /*open files*/
> + unsigned long long len; /*length of all files, in bytes.*/
> + int totfiles, curid; /*curid is used for naming files.*/
> + int max_file_len;
>
> /*tiles which have been compressed, but not written to disk yet.*/
> ListBase compressed_tiles;
>
> - unsigned int tottiles;
> + //unsigned int tottiles;
> unsigned long maxmem;
> unsigned long memused; /*total amount of memory used at the
> moment.*/
> + unsigned long grace_period; /*margin, used to (hopefully) cache
> tiles in groups instead
> + of one
> at a time.*/
> } TCS_TilePool;
>
> typedef struct TCS_TileBuffer {
> struct TCS_TileBuffer *next, *prev;
> struct TCS_TileBuffer *(*newBuffer)(int tilesizex, int tilesizey,
> - int sizex, int sizey);
> -
> - /*should make sure tiles reference cachepool.*/
> - void (*makeTiles)(struct TCS_TileBuffer *self, TCS_TilePool
> *cachepool);
> -
> + int sizex, int sizey, void
> *data);
> /*only frees direct data*/
> void (*freeBuffer)(struct TCS_TileBuffer *self);
> -
> +
> /*as may dimensions can be used as needed, others can just be
> passed in
> as 0.*/
> - void (*getTile)(struct TCS_TileBuffer *self, int x, int y);
> + void *(*getTile)(struct TCS_TileBuffer *self, int x, int y, int
> z);
> + int (*getTileSizeX)(struct TCS_TileBuffer *self);
> + int (*getTileSizeY)(struct TCS_TileBuffer *self);
> + int (*getSizeX)(struct TCS_TileBuffer *self);
> + int (*getSizeY)(struct TCS_TileBuffer *self);
> + unsigned int flags;
>
> - /*should be set by TCS_MakePool, not the newBuffer funcion*/
> + /*should be set by TCS_MakePool, not the newBuffer function*/
> TCS_TilePool *pool;
> } TCS_TileBuffer;
>
> +/*TCS_TileBuffer .flags member flags*/
> +/*Read only buffer means once a tile is written once, we
> + never have to write it to disk again.*/
> +#define TCS_READONLY 1
> +
> /*buffer type templates*/
>
> /*I imagine these next three should each use a common set of
> implementation
> @@ -159,11 +173,12 @@
> TCS_TilePool *TCS_MakePool(unsigned long max_mem_bytes);
> void TCS_FreePool(TCS_TilePool *pool);
>
> -TCS_TileBuffer *TCS_MakeBuffer(TCS_TileBuffer *type, void *data);
> -void TCS_FreeBuffer(TCS_TileBuffer *type);
> -
> +TCS_TileBuffer *TCS_MakeBuffer(TCS_TileBuffer *type, int tilesizex, int
> tilesizey,
> + int sizex, int sizey, void *data);
> +void TCS_InitBuffer(TCS_TileBuffer *type, void *buffer);
> +void TCS_FreeBuffer(void *buf);
> /*as may dimensions can be used as needed, others can just be passed in as
> 0.*/
> -void *TCS_GetTile(TCS_TileBuffer *type, int x, int y, int z);
> +void *TCS_GetTile(void *buf, int x, int y, int z);
>
> /*hrm, not sure if this next one will be needed, its possible it can
> all be done from within TCS_GetTile(), perhaps even progressively*/
> @@ -174,17 +189,28 @@
>
> /*all these file functions (other then TCS_wrapmem) have the same
> interface
> as their stdlib stdio counterparts.*/
> -void TCS_fread(void *ptr, unsigned long size, unsigned long count,
> +
> +int TCS_fread(void *ptr, unsigned long size, unsigned long count,
> TCS_File *file);
> -void TCS_fwrite(void *ptr, unsigned long size, unsigned long count,
> +int TCS_fwrite(void *ptr, unsigned long size, unsigned long count,
> TCS_File *file);
>
> /*these are actually private functions, never use them in cache
> implementations!*/
> +
> +/*closes a file, then deletes it if its a disk file. like TCS_fclose it
> frees file*/
> +void TCS_fdelete(TCS_File *file);
> +
> +TCS_File *TCS_openmemfile(int initial_size);
> TCS_File *TCS_fopen(const char *path, const char *mode);
> -TCS_File *TCS_fclose(const char *path, const char *mode);
> +
> +/*closes a file and frees file (and memory buffers if its a mem file)*/
> +void TCS_fclose(TCS_File *file);
> TCS_File *TCS_wrapmem(void *mem, int len);
> unsigned int TCS_ftell(TCS_File *file);
> void TCS_rewind(TCS_File *file);
> void TCS_fseek(TCS_File *file, unsigned long offset, int origin);
> +void TCS_fflush(TCS_File *file);
>
> - #endif /* BKE_TILE_H */
> +#define BASSERT(eval) if (!(eval)) printf("\nassert \"%s\" in
> file:\n%s\n on line %d failed.\n\n", #eval, __FILE__, __LINE__)
> +
> +#endif /* BKE_TILE_H */
>
> Deleted: branches/soc-2007-joeedh/source/blender/blenkernel/intern/cache.c
> ===================================================================
> --- branches/soc-2007-joeedh/source/blender/blenkernel/intern/cache.c
> 2007-07-01 14:12:10 UTC (rev 11139)
> +++ branches/soc-2007-joeedh/source/blender/blenkernel/intern/cache.c
> 2007-07-02 07:42:18 UTC (rev 11140)
> @@ -1,214 +0,0 @@
> -#if 0
> -/**
> - * $Id: cache.c 10648 2007-05-03 21:37:52Z blendix $
> - *
> - * ***** BEGIN GPL LICENSE BLOCK *****
> - *
> - * This program is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU General Public License
> - * as published by the Free Software Foundation; either version 2
> - * of the License, or (at your option) any later version.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> Foundation,
> - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
> - *
> - * The Original Code is Copyright (C) 2001-2002 by Joseph Eagar.
> - *
> - * Contributor(s): Joseph Eagar
> - *
> - * ***** END GPL/BL DUAL LICENSE BLOCK *****
> - */
> -
> -#include "BKE_global.h"
> -#include "BKE_main.h"
> -#include "BKE_tile.h"
> -
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <string.h>
> -
> -/*Deep shadow buffer cache implementation*/
> -typedef struct DSMBuf {
> - TCS_TileBuffer buf;
> - int tottilex, tottiley;
> - int tilesizex, tilesizey;
> - int sizex, sizey;
> - DSMTile *tiles;
> -} DSMBuf;
> -
> -typedef struct DSMTile {
> - TCS_Tile tile;
> - void *dsmdata;
> - int x, y;
> -} DSMTile;
> -
> -static void dsm_loadtile(TCS_Tile *self, FILE *file, unsigned long start)
> -{
> -}
> -
> -static void dsm_savetile(TCS_Tile *self, FILE *file, unsigned long
> curpos)
> -{
> -}
> -
> -static void dsm_maketiles(TCS_TileBuffer *self, TCS_TilePool *pool)
> -{
> - DSMTile *tile;
> - DSMBuf *buf = (DSMBuf*)self;
> - int i;
> -
> - for (i=0, tile=buf->tiles; i<buf->tottilex*buf->tottiley; buf++,
> i++) {
> - buf->tile.loadFromCache = dsm_loadtile;
> - buf->tile.saveToCache = dsm_savetile;
> - buf->pool = pool;
> - buf->buffer = self;
> - }
> -}
> -
> -static void dsm_freebuffer(TCS_TileBuffer *self)
> -{
> - DSMBuf *buf = (DSMBuf*)self;
> - MEM_freeN(buf->tiles);
> -
> - /*FIXMEGREP: ToDo: figure out if actual deep shadow map data
> - should be freed here or not
> - */
> -}
> -
> -static void dsm_gettile(TCS_TileBuffer *self, int x, int y)
> -{
> - DSMBuf *buf = (DSMBuf*)self;
> - return buf->tiles[y*buf->sizex+x];
> -}
> -
> -static struct TCS_TileBuffer *dsm_newbuffer(int tsizex, tsizey, sizex,
> sizey)
> -{
> - DSMBuf *buf = MEM_callocN(sizeof(DSMBuf), "DSMBuf");
> -
> - buf->tottilex = sizex / tsizex;
> - buf->tottiley = sizey / tsizey;
> -
> - buf->tilesizex = tsizex;
> - buf->tilesizey = tsizey;
> -
> - buf->sizex = sizex;
> - buf->sizey = sizey;
> -
> - buf->tiles =
> MEM_callocN(sizeof(DSMTile)*buf->tottilex*buf->tottiley, "DSMTile array");
> -}
> -
> -TCS_TileBuffer TCS_DeepShadowBuffer = {
> - NULL, NULL,
> - dsm_newbuffer,
> - dsm_maketiles,
> - dsm_freebuffer,
> - dsm_gettile,
> - 0
> -};
> -
> -/*Image buffer implementation*/
> -
> -#define TYPE_UBYTE1 0
> -#define TYPE_UBYTE3 1
> -#define TYPE_UBYTE4 2
> -#define TYPE_FLOAT1 3
> -#define TYPE_FLOAT3 4
> -#define TYPE_FLOAT4 5
> -
> -int type_totchannels[] = {
> - 1,
> - 3,
> - 4,
> - 1,
> - 3,
> - 4
> -};
> -
> -int type_sizes[] = {
> - 1,
> - 3,
> - 4,
> - sizeof(float),
> - sizeof(float)*3,
> - sizeof(float)*4)
> -};
> -
> -#define GETARRAY_PIXPTR(width, x, y, arr, type, channels)
> ((type*)&((char*)arr)[(sizeof(type)*y*sizex+sizeof(type)*x)*sizeof(type)*channels])
> -
> -/*
> - Utility inline function to fetch a pixel from any image buffer type,
> - convert it to a float if necassary, then copy the result into a float
> - array called varname. Note that the code limits what's copied to
> - sizeof(varname).
> -
> - heh, this would make a wonderful inline function, I'm sure, but I have
> no idea how
>
> @@ Diff output truncated at 10240 characters. @@
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/bf-committers/attachments/20070702/148fdf4e/attachment-0001.htm
More information about the Bf-committers
mailing list