MagickCore  6.9.11-60
Convert, Edit, Or Compose Bitmap Images
cache-private.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2021 ImageMagick Studio LLC, a non-profit organization
3  dedicated to making software imaging solutions freely available.
4 
5  You may not use this file except in compliance with the License. You may
6  obtain a copy of the License at
7 
8  https://imagemagick.org/script/license.php
9 
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15 
16  MagickCore cache private methods.
17 */
18 #ifndef MAGICKCORE_CACHE_PRIVATE_H
19 #define MAGICKCORE_CACHE_PRIVATE_H
20 
21 #include <time.h>
22 #include "magick/cache.h"
24 #include "magick/opencl-private.h"
25 #include "magick/random_.h"
26 #include "magick/thread-private.h"
27 #include "magick/semaphore.h"
28 
29 #if defined(__cplusplus) || defined(c_plusplus)
30 extern "C" {
31 #endif
32 
33 typedef void
35 
36 typedef const IndexPacket
37  *(*GetVirtualIndexesFromHandler)(const Image *);
38 
39 typedef IndexPacket
40  *(*GetAuthenticIndexesFromHandler)(const Image *);
41 
43  (*GetOneAuthenticPixelFromHandler)(Image *,const ssize_t,const ssize_t,
46  const ssize_t,const ssize_t,PixelPacket *,ExceptionInfo *),
48 
49 typedef const PixelPacket
50  *(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod,
51  const ssize_t,const ssize_t,const size_t,const size_t,ExceptionInfo *),
52  *(*GetVirtualPixelsHandler)(const Image *);
53 
54 typedef PixelPacket
55  *(*GetAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
56  const size_t,const size_t,ExceptionInfo *);
57 
58 typedef PixelPacket
59  *(*GetAuthenticPixelsFromHandler)(const Image *);
60 
61 typedef PixelPacket
62  *(*QueueAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
63  const size_t,const size_t,ExceptionInfo *);
64 
65 typedef void
67 
68 typedef struct _CacheMethods
69 {
72 
75 
78 
81 
84 
87 
90 
93 
96 
99 
103 
104 typedef struct _NexusInfo
105 {
108 
111 
114 
118 
121 
124 
125  size_t
127 
128  struct _NexusInfo
131 
132 typedef struct _OpenCLCacheInfo
133 {
134  cl_event
136 
137  cl_mem
139 
140  cl_uint
142 
145 
148 
152 
153 typedef struct _CacheInfo
154 {
155  ClassType
157 
160 
161  size_t
163 
164  CacheType
166 
167  MapMode
170 
173 
174  size_t
177 
180 
183 
186 
189 
190  size_t
192 
193  NexusInfo
195 
198 
201 
204 
205  int
207 
208  char
211 
214 
215  RandomInfo
217 
218  size_t
220 
221  void
223 
227 
229  id;
230 
231  ssize_t
233 
237 
238  time_t
240 
241  size_t
243 
246 
251 
252 extern MagickExport Cache
253  AcquirePixelCache(const size_t),
257 
258 extern MagickExport CacheType
259  GetPixelCacheType(const Image *);
260 
261 extern MagickExport ClassType
263 
266 
267 extern MagickExport const IndexPacket
269 
270 extern MagickExport const PixelPacket
272  const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
275 
279 
282 
283 extern MagickExport NexusInfo
284  **AcquirePixelCacheNexus(const size_t),
285  **DestroyPixelCacheNexus(NexusInfo **,const size_t);
286 
288  *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
289  const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
290  *QueueAuthenticPixel(Image *,const ssize_t,const ssize_t,const size_t,
291  const size_t,const MagickBooleanType,NexusInfo *,ExceptionInfo *),
292  *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
293  const size_t,const size_t,const MagickBooleanType,NexusInfo *,
295 
296 extern MagickExport size_t
298 
299 extern MagickExport void
301  GetPixelCacheTileSize(const Image *,size_t *,size_t *),
304 
305 extern MagickPrivate void
306  ResetPixelCacheEpoch(void);
307 
310 
311 #if defined(MAGICKCORE_OPENCL_SUPPORT)
312 extern MagickPrivate cl_event
313  *GetOpenCLEvents(const Image *,cl_uint *);
314 
315 extern MagickPrivate cl_mem
316  GetAuthenticOpenCLBuffer(const Image *,ExceptionInfo *);
317 
318 extern MagickPrivate void
319  AddOpenCLEvent(const Image *,cl_event),
320  SyncAuthenticOpenCLBuffer(const Image *);
321 #endif
322 
323 #if defined(__cplusplus) || defined(c_plusplus)
324 }
325 #endif
326 
327 #endif
QueueAuthenticPixelCacheNexus
MagickExport PixelPacket * QueueAuthenticPixelCacheNexus(Image *, const ssize_t, const ssize_t, const size_t, const size_t, const MagickBooleanType, NexusInfo *, ExceptionInfo *) magick_hot_spot
Definition: cache.c:4361
MagickExport
#define MagickExport
Definition: method-attribute.h:80
_CacheInfo::file
int file
Definition: cache-private.h:206
GetVirtualPixelsNexus
MagickExport const PixelPacket * GetVirtualPixelsNexus(const Cache, NexusInfo *)
Definition: cache.c:3538
SyncImagePixelCache
MagickPrivate MagickBooleanType SyncImagePixelCache(Image *, ExceptionInfo *)
Definition: cache.c:5681
GetPixelCacheStorageClass
MagickExport ClassType GetPixelCacheStorageClass(const Cache)
Definition: cache.c:2623
QueueAuthenticPixel
MagickExport PixelPacket * QueueAuthenticPixel(Image *, const ssize_t, const ssize_t, const size_t, const size_t, const MagickBooleanType, NexusInfo *, ExceptionInfo *)
GetPixelCacheType
MagickExport CacheType GetPixelCacheType(const Image *)
Definition: cache.c:1972
cl_event
void * cl_event
Definition: opencl-private.h:32
_CacheInfo::length
MagickSizeType length
Definition: cache-private.h:182
VirtualPixelMethod
VirtualPixelMethod
Definition: cache-view.h:28
GetAuthenticIndexesFromHandler
IndexPacket *(* GetAuthenticIndexesFromHandler)(const Image *)
Definition: cache-private.h:40
_OpenCLCacheInfo
Definition: cache-private.h:133
_CacheMethods::get_authentic_indexes_from_handler
GetAuthenticIndexesFromHandler get_authentic_indexes_from_handler
Definition: cache-private.h:86
DestroyPixelCache
MagickExport Cache DestroyPixelCache(Cache)
_CacheInfo::pixels
PixelPacket * pixels
Definition: cache-private.h:197
_CacheInfo::number_connections
size_t number_connections
Definition: cache-private.h:219
_NexusInfo::indexes
IndexPacket * indexes
Definition: cache-private.h:123
_CacheInfo::type
CacheType type
Definition: cache-private.h:165
_OpenCLCacheInfo::pixels
PixelPacket * pixels
Definition: cache-private.h:147
_CacheInfo::rows
size_t rows
Definition: cache-private.h:176
GetPixelCacheMethods
MagickExport void GetPixelCacheMethods(CacheMethods *)
_NexusInfo
Definition: cache-private.h:105
NexusInfo
struct _NexusInfo NexusInfo
magick_restrict
#define magick_restrict
Definition: MagickCore.h:41
_RectangleInfo
Definition: geometry.h:124
_CacheMethods::get_virtual_pixels_handler
GetVirtualPixelsHandler get_virtual_pixels_handler
Definition: cache-private.h:74
_CacheInfo::storage_class
ClassType storage_class
Definition: cache-private.h:156
_CacheInfo::indexes
IndexPacket * indexes
Definition: cache-private.h:200
QueueAuthenticPixelsHandler
PixelPacket *(* QueueAuthenticPixelsHandler)(Image *, const ssize_t, const ssize_t, const size_t, const size_t, ExceptionInfo *)
Definition: cache-private.h:62
_CacheMethods::get_authentic_pixels_from_handler
GetAuthenticPixelsFromHandler get_authentic_pixels_from_handler
Definition: cache-private.h:92
_CacheInfo::debug
MagickBooleanType debug
Definition: cache-private.h:226
_CacheInfo::mapped
MagickBooleanType mapped
Definition: cache-private.h:172
SyncAuthenticPixelCacheNexus
MagickExport MagickBooleanType SyncAuthenticPixelCacheNexus(Image *, NexusInfo *magick_restrict, ExceptionInfo *) magick_hot_spot
GetPixelCacheChannels
MagickExport size_t GetPixelCacheChannels(const Cache)
Definition: cache.c:2382
MagickSizeType
size_t MagickSizeType
Definition: magick-type.h:140
AcquirePixelCache
MagickExport Cache AcquirePixelCache(const size_t)
_CacheInfo::nexus_info
NexusInfo ** nexus_info
Definition: cache-private.h:194
IndexPacket
Quantum IndexPacket
Definition: pixel.h:129
_NexusInfo::authentic_pixel_cache
MagickBooleanType authentic_pixel_cache
Definition: cache-private.h:120
_CacheInfo::server_info
void * server_info
Definition: cache-private.h:222
MagickThreadType
pid_t MagickThreadType
Definition: thread_.h:34
_CacheMethods::destroy_pixel_handler
DestroyPixelHandler destroy_pixel_handler
Definition: cache-private.h:101
_CacheInfo::active_index_channel
MagickBooleanType active_index_channel
Definition: cache-private.h:203
AcquirePixelCacheNexus
MagickExport NexusInfo ** AcquirePixelCacheNexus(const size_t)
CacheType
CacheType
Definition: cache.h:28
DestroyPixelCacheNexus
MagickExport NexusInfo ** DestroyPixelCacheNexus(NexusInfo **, const size_t)
Definition: cache.c:1251
random_.h
_CacheInfo::offset
MagickOffsetType offset
Definition: cache-private.h:179
cl_uint
void * cl_uint
Definition: opencl-private.h:34
GetPixelCacheTileSize
MagickExport void GetPixelCacheTileSize(const Image *, size_t *, size_t *)
_CacheInfo::reference_count
ssize_t reference_count
Definition: cache-private.h:232
semaphore.h
_CacheMethods::get_one_authentic_pixel_from_handler
GetOneAuthenticPixelFromHandler get_one_authentic_pixel_from_handler
Definition: cache-private.h:89
_CacheInfo::semaphore
SemaphoreInfo * semaphore
Definition: cache-private.h:235
_CacheInfo::filename
char filename[MaxTextExtent]
Definition: cache-private.h:209
_NexusInfo::virtual_nexus
struct _NexusInfo * virtual_nexus
Definition: cache-private.h:128
DestroyPixelHandler
void(* DestroyPixelHandler)(Image *)
Definition: cache-private.h:66
_CacheInfo::synchronize
MagickBooleanType synchronize
Definition: cache-private.h:225
_OpenCLCacheInfo::events_semaphore
SemaphoreInfo * events_semaphore
Definition: cache-private.h:150
CacheMethods
struct _CacheMethods CacheMethods
thread-private.h
GetVirtualPixelsHandler
const PixelPacket *(*) *(* GetVirtualPixelsHandler)(const Image *)
Definition: cache-private.h:52
OpenCLCacheInfo
struct _OpenCLCacheInfo OpenCLCacheInfo
SemaphoreInfo
Definition: semaphore.c:61
GetPixelCacheColorspace
MagickExport ColorspaceType GetPixelCacheColorspace(const Cache)
Definition: cache.c:2418
_Image
Definition: image.h:153
GetAuthenticPixelCacheNexus
MagickExport PixelPacket * GetAuthenticPixelCacheNexus(Image *, const ssize_t, const ssize_t, const size_t, const size_t, NexusInfo *, ExceptionInfo *) magick_hot_spot
_OpenCLCacheInfo::buffer
cl_mem buffer
Definition: cache-private.h:138
_CacheInfo::number_threads
size_t number_threads
Definition: cache-private.h:191
_MagickPixelPacket
Definition: pixel.h:105
GetAuthenticPixelsFromHandler
PixelPacket *(* GetAuthenticPixelsFromHandler)(const Image *)
Definition: cache-private.h:59
_CacheInfo::disk_mode
MapMode disk_mode
Definition: cache-private.h:169
_CacheMethods::get_one_virtual_pixel_from_handler
GetOneVirtualPixelFromHandler get_one_virtual_pixel_from_handler
Definition: cache-private.h:80
ColorspaceType
ColorspaceType
Definition: colorspace.h:26
SetPixelCacheMethods
MagickExport void SetPixelCacheMethods(Cache, CacheMethods *)
Definition: cache.c:5002
_CacheInfo::random_info
RandomInfo * random_info
Definition: cache-private.h:216
MapMode
MapMode
Definition: blob.h:32
GetVirtualPixelHandler
const PixelPacket *(* GetVirtualPixelHandler)(const Image *, const VirtualPixelMethod, const ssize_t, const ssize_t, const size_t, const size_t, ExceptionInfo *)
Definition: cache-private.h:50
_NexusInfo::region
RectangleInfo region
Definition: cache-private.h:110
_CacheInfo::mode
MapMode mode
Definition: cache-private.h:168
_CacheMethods
Definition: cache-private.h:69
MagickPrivate
#define MagickPrivate
Definition: method-attribute.h:81
ClonePixelCacheMethods
MagickExport void ClonePixelCacheMethods(Cache, const Cache)
GetVirtualPixelCacheNexus
MagickExport const PixelPacket * GetVirtualPixelCacheNexus(const Image *, const VirtualPixelMethod, const ssize_t, const ssize_t, const size_t, const size_t, NexusInfo *, ExceptionInfo *) magick_hot_spot
_CacheMethods::get_authentic_pixels_handler
GetAuthenticPixelsHandler get_authentic_pixels_handler
Definition: cache-private.h:83
_CacheInfo::width_limit
MagickSizeType width_limit
Definition: cache-private.h:248
cl_mem
void * cl_mem
Definition: opencl-private.h:33
GetAuthenticPixelsHandler
PixelPacket *(* GetAuthenticPixelsHandler)(Image *, const ssize_t, const ssize_t, const size_t, const size_t, ExceptionInfo *)
Definition: cache-private.h:55
SyncAuthenticPixelsHandler
MagickBooleanType(*)(*)(* SyncAuthenticPixelsHandler)(Image *, ExceptionInfo *)
Definition: cache-private.h:47
_CacheInfo::methods
CacheMethods methods
Definition: cache-private.h:213
_CacheInfo::opencl
OpenCLCacheInfo * opencl
Definition: cache-private.h:245
GetVirtualIndexesFromHandler
const IndexPacket *(* GetVirtualIndexesFromHandler)(const Image *)
Definition: cache-private.h:37
_CacheInfo::virtual_pixel_method
VirtualPixelMethod virtual_pixel_method
Definition: cache-private.h:185
_OpenCLCacheInfo::length
MagickSizeType length
Definition: cache-private.h:144
CacheInfo
struct _CacheInfo CacheInfo
_CacheInfo::cache_filename
char cache_filename[MaxTextExtent]
Definition: cache-private.h:210
GetOneVirtualPixelFromHandler
MagickBooleanType(*)(* GetOneVirtualPixelFromHandler)(const Image *, const VirtualPixelMethod, const ssize_t, const ssize_t, PixelPacket *, ExceptionInfo *)
Definition: cache-private.h:45
cache.h
_CacheMethods::get_virtual_pixel_handler
GetVirtualPixelHandler get_virtual_pixel_handler
Definition: cache-private.h:71
ResetPixelCacheEpoch
MagickPrivate void ResetPixelCacheEpoch(void)
Definition: cache.c:4973
_CacheInfo::height_limit
MagickSizeType height_limit
Definition: cache-private.h:249
_OpenCLCacheInfo::event_count
cl_uint event_count
Definition: cache-private.h:141
MagickBooleanType
MagickBooleanType
Definition: magick-type.h:203
_NexusInfo::signature
size_t signature
Definition: cache-private.h:126
ClonePixelCache
MagickExport Cache ClonePixelCache(const Cache)
_NexusInfo::mapped
MagickBooleanType mapped
Definition: cache-private.h:107
_ExceptionInfo
Definition: exception.h:103
Cache
void * Cache
Definition: cache-private.h:34
_CacheInfo::signature
size_t signature
Definition: cache-private.h:242
distribute-cache.h
opencl-private.h
_NexusInfo::pixels
PixelPacket * pixels
Definition: cache-private.h:117
_CacheMethods::queue_authentic_pixels_handler
QueueAuthenticPixelsHandler queue_authentic_pixels_handler
Definition: cache-private.h:95
GetPixelCacheNexusExtent
MagickExport MagickSizeType GetPixelCacheNexusExtent(const Cache, NexusInfo *)
Definition: cache.c:2533
_CacheInfo::virtual_pixel_color
MagickPixelPacket virtual_pixel_color
Definition: cache-private.h:188
_CacheInfo
Definition: cache-private.h:154
_CacheInfo::id
MagickThreadType id
Definition: cache-private.h:229
GetVirtualIndexesFromNexus
MagickExport const IndexPacket * GetVirtualIndexesFromNexus(const Cache, NexusInfo *)
Definition: cache.c:2780
_CacheInfo::file_semaphore
SemaphoreInfo * file_semaphore
Definition: cache-private.h:236
_CacheInfo::timestamp
time_t timestamp
Definition: cache-private.h:239
_CacheMethods::get_virtual_indexes_from_handler
GetVirtualIndexesFromHandler get_virtual_indexes_from_handler
Definition: cache-private.h:77
_CacheMethods::sync_authentic_pixels_handler
SyncAuthenticPixelsHandler sync_authentic_pixels_handler
Definition: cache-private.h:98
_CacheInfo::channels
size_t channels
Definition: cache-private.h:162
_CacheInfo::columns
size_t columns
Definition: cache-private.h:175
GetOneAuthenticPixelFromHandler
MagickBooleanType(* GetOneAuthenticPixelFromHandler)(Image *, const ssize_t, const ssize_t, PixelPacket *, ExceptionInfo *)
Definition: cache-private.h:43
_NexusInfo::cache
PixelPacket * cache
Definition: cache-private.h:116
MaxTextExtent
#define MaxTextExtent
Definition: method-attribute.h:89
magick_hot_spot
#define magick_hot_spot
Definition: method-attribute.h:122
_OpenCLCacheInfo::events
cl_event * events
Definition: cache-private.h:135
_NexusInfo::length
MagickSizeType length
Definition: cache-private.h:113
ReferencePixelCache
MagickExport Cache ReferencePixelCache(Cache)
Definition: cache.c:4941
ClassType
ClassType
Definition: magick-type.h:196
_PixelPacket
Definition: pixel.h:132
_CacheInfo::colorspace
ColorspaceType colorspace
Definition: cache-private.h:159
_RandomInfo
Definition: random.c:78
MagickOffsetType
ssize_t MagickOffsetType
Definition: magick-type.h:139